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
} 

 

Partagez cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *