Présentation ppt

498 vues

Publié le

poo présentation

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
498
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
10
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Présentation ppt

  1. 1. Plan Introduction Passage par valeur Passage par adresse Passage par référence Conclusion
  2. 2. Introduction
  3. 3. Passage par valeur Principe Les arguments sont copiés dans des objets temporaires qui sont crées lors du passage darguments et qui sont détruit à la fin de lexécution de la fonction . Toutes les modifications effectuées sur ces objets temporaires seront donc perdues à la fin de la fonction et nauront aucune incidence sur lobjet passé en argument lors de lappel de la fonction.
  4. 4. Passage par valeur Exemple:void incremente(int i) /* i est la copie de la valeur passée en paramètre */{ i++; /* Modifie i, mais pas la variable fournie par lappelant. */ }int main() { int j = 12; incremente(j); /* Le contenu de j est copié dans i. j nest pas modifié. Il vaut toujours 12. */ cout << j << endl; // Affiche 12}
  5. 5. Passage par adresse Notion d’adresse: Tout objet manipulé par lordinateur est stocké dans sa mémoire. On peut considérer que cette mémoire est constituée dune série de « cases », cases dans lesquelles sont stockées les valeurs des variables ou les instructions du programme. Pour pouvoir accéder à un objet, cest-à-dire au contenu de la case mémoire dans laquelle cet objet est enregistré, il faut connaître le numéro de cette case. Autrement dit, il faut connaître lemplacement en mémoire de lobjet à manipuler. Cet emplacement est appelé ladresse de la case mémoire.
  6. 6. Passage par adresse Principe: Les arguments sont des pointeurs qui contiennent ladresse en mémoire des objets que lon veut manipuler. Il ny a donc plus de copie, plus de variable locale. Toute modification du paramètre dans la fonction appelée entraîne la modification de la variable passée en paramètre.
  7. 7. Passage par adresse Exemple:void incremente(int * i) { /*incremente attend l’adresse d’un entier*/ (*i)++; } int main() { int j = 12; incremente(&j); /* On passe ladresse de j en paramètre. */ cout << j << endl; // Affiche 13}
  8. 8.  Cependant, plusieurs problèmes se posent au niveau syntaxique pour le passage par adresse :  la syntaxe est lourde dans la fonction, à cause de lemploi de lopérateur * devant les paramètres ;  la syntaxe est dangereuse lors de lappel de la fonction, puisquil faut systématiquement penser à utiliser lopérateur & devant les paramètres.
  9. 9. Passage par référence Notion de référence: Les références sont des synonymes didentificateurs. Elles permettent de manipuler une variable sous un autre nom que celui sous laquelle cette dernière a été déclarée.
  10. 10. Passage par référence Notion de référence: Toute référence doit se référer à un identificateur : il est donc impossible de déclarer une référence sans linitialiser. De plus, la déclaration dune référence ne crée pas un nouvel objet comme cest le cas pour la déclaration dune variable par exemple. En effet, les références se rapportent à des identificateurs déjà existants.
  11. 11. Passage par référence Principe: La fonction appelée manipule directement lobjet qui lui est passé par référence. Il ny a pas de copie ni de construction dobjet temporaire lors de ce type de passage.
  12. 12. Passage par référence Exemple:void incremente(int & i) { i++; // Modifie le paramètre passé en référence }int main() { int j = 12; incremente(j); // Lopérateur & nest pas nécessaire pour appeler incremente cout << j << endl; // Affiche 13}
  13. 13. Conclusion

×