Bonjour à tous,

Je me remet un peu à jour en terme de connaissances basiques sur le C++.

Je voudrais savoir la différence entre un passage par référence et un par pointeur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
MaFonction1(int &x); // Par référence
MaFonction2(int *x); // Par pointeur
MaFonction2(int x); // Par valeur
Je vois bien la différence entre par valeur et par référence/pointeur.

Par contre, c'est la différence entre par pointeur et par référence qui me dérange.
Dans le cas d'un pointeur, on économise la copie de l'argument au profit d'une simple copie d'adresse mémoire (donc en général 4 octets).
Concernant les droits de la fonction, on peut faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
MaFonction2(int *x);
MaFonction2(const int *x);
MaFonction2(int * const x);
MaFonction2(const int * const x);
Quelques question:
est-ce que on peut faire également
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
MaFonction2(int &x);
MaFonction2(const int &x);
MaFonction2(int & const x);
MaFonction2(const int & const x);
?

Le passage par pointeur ne nécessite qu'une copie du pointeur passé, le passage par référence, comment se débrouille le compilateur?


Merci beaucoup de m'éclairer là dessus

A bientôt

Aurélien