4.5. Lien entre les pointeurs et les références

Les références et les pointeurs sont étroitement liés. En effet, si l'on utilise une référence pour manipuler un objet, cela revient exactement à manipuler un pointeur constant contenant l'adresse de l'objet manipulé. Les références permettent simplement d'obtenir le même résultat que les pointeurs avec une plus grande facilité d'écriture.

Par exemple, considérons le morceau de code suivant :

int i=0;
int *pi=&i;
*pi=*pi+1;   // Manipulation de i via pi.

et faisons passer l'opérateur & de la deuxième ligne à gauche de l'opérateur d'affectation :

int i=0;
int &*pi=i;   // Cela génère une erreur de syntaxe mais nous
                  // l'ignorons pour les besoins de l'explication.
*pi=*pi+1;

Maintenant, comparons avec le morceau de code équivalent suivant :

int i=0;
int &ri=i;
ri=ri+1;          // Manipulation de i via ri.

Nous constatons que la référence ri peut être identifiée avec l'expression *pi, qui représente bel et bien la variable i. Ainsi, ri représente exactement i. Cela permet de comprendre l'origine de la syntaxe de déclaration des références.