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
}

