Programmation en C++ – Retour par référence
Vous pouvez rendre votre programme C ++ plus facile à lire et à maintenir en utilisant des références plutôt que des pointeurs. Une fonction C ++ peut renvoyer une référence de la même façon qu’elle renvoie un pointeur.
Lorsqu’une fonction renvoie une référence, elle renvoie un pointeur implicite à sa valeur de retour. De cette façon, une fonction peut être utilisée sur le côté gauche d’une instruction (affectation). Par exemple, considérez ce programme simple:
#include <iostream> #include <ctime> using namespace std; double v[] = {5.9, 78.1, 147.8, 99.9, 80.0}; double& setValues( int i ) { return v[i]; // renvoie une référence au ième élément } // fonction principale pour appeler la fonction définie ci-dessus. int main () { cout << "Valeur avant le changement" << endl; for ( int i = 0; i < 5; i++ ) { cout << "v[" << i << "] = "; cout << v[i] << endl; } setValues(1) = 20.23; // changement du 2ème élément setValues(3) = 70.8; // changement du 4ème élément cout << "Valeur après le changement" << endl; for ( int i = 0; i < 5; i++ ) { cout << "v[" << i << "] = "; cout << v[i] << endl; } return 0; }
La sortie :
Valeur avant le changement v[0] = 5.9 v[1] = 78.1 v[2] = 147.8 v[3] = 99.9 v[4] = 80 Valeur après le changement v[0] = 5.9 v[1] = 20.23 v[2] = 147.8 v[3] = 70.8
Lors que la fonction retourne une référence, veillez à ce que l’objet désigné ne sera pas hors de portée. Donc, il est illégal de renvoyer une référence à une variable local. Mais vous pouvez toujours retourner une référence sur une variable statique.
int& func() { int q; //! return q; // erreur de compilation static int x; return x; // valide }