Programmation C++/Les références

Un livre de Wikibooks.

Programmation C++
Programmation C++
Sommaire
Liens
Modifier ce modèle

Sections

[modifier] Les références

Une référence peut être vue comme un alias d'une variable. C'est à dire qu'utiliser la variable, ou une référence à cette variable est équivalent. Ce qui signifie que l'on peut modifier le contenu de la variable en utilisant une référence.

Une référence ne peut être initialisée qu'une seule fois : à la déclaration. Toute autre affectation modifie en fait la variable référencée. Une référence ne peut donc référencer qu'une seule variable tout au long de sa durée de vie.

[modifier] Déclaration

type& identificateur=variable;

[modifier] Sémantique

La variable identificateur est une référence vers la variable variable. La variable variable doit être de type type.

[modifier] Exemple de programme

#include <iostream>
using namespace std;
 
int main()
{
    int a=98,
        b=78,
        c;
 
    int &x=a;
    c = x + 5;  // équivaut à :  c = a + 5;
 
    int &y=b;
    y = a + 10; // équivaut à :  b = a + 10;
 
    cout << "La variable b vaut : " << b << endl;
    cout << "La variable c vaut : " << c << endl;
 
    return 0;
}

[modifier] Exécution

La variable b vaut : 108
La variable c vaut : 103

[modifier] Explications

  • Dans ce programme, on définit 3 variables entières a, b et c et on initialise a à 98 et b à 78.
  • int &x=a; permet de déclarer une référence x vers la variable a. x+5 vaut donc la même chose que a+5 donc 103.
  • c=x+5; permet donc de transférer 103 dans la variable c.
  • int &y=b; permet de déclarer une référence y vers la variable b. a+10 vaut 98+10 donc 108.
  • y=a+10; permet de transférer 108 dans la variable b.
  • on affiche ensuite b et c c'est-à-dire respectivement 108 et 103.

[modifier] Pourquoi utiliser une référence ?

C'est la question qui peut se poser en regardant l'exemple précédent, où il serait plus clair d'utiliser directement les variables. Les références sont principalement utilisées pour passer des paramètres aux fonctions. Voir le chapitre sur les fonctions, section « passage de paramètres par référence ».

Les références constantes sont également utilisées pour référencer des résultats de retour de fonctions afin d'éviter les copies. C'est particulièrement indiqué dans le cas d'objets retournés par des fonctions. Dans ce cas, la valeur ou objet temporaire retourné a une durée de vie aussi longue que la référence.

Exemple:

class Retour
{
public:
   void g() const {}
};
 
Retour f() { return Retour(); }
 
int main(int argc, char *argv[])
{
    const Retour &retour = f();
    retour.g();
    return 0;
}