C++ Utilisation de références comme valeurs de retour

Références C++

L'utilisation de références au lieu de pointeurs rend les programmes C++ plus faciles à lire et à maintenir. Les fonctions C++ peuvent renvoyer une référence d'une manière similaire au renvoi d'un pointeur.

Lorsqu'une fonction renvoie une référence, elle renvoie un pointeur implicite vers la valeur de retour. De cette façon, la fonction peut être placée à gauche d'une instruction d'affectation. Par exemple, considérons le programme simple suivant :

Exemple

#include <iostream> using namespace std; double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0}; double& setValues(int i) { double& ref = vals[i]; return ref; // renvoie une référence au i-ème élément ; ref est une variable de référence, ref fait référence à vals[i] } // fonction main pour appeler la fonction définie ci-dessus int main () { cout << "valeur avant modification" << endl; for ( int i = 0; i < 5; i++ ) { cout << "vals[" << i << "] = "; cout << vals[i] << endl; } setValues(1) = 20.23; // modifier le 2e élément setValues(3) = 70.8; // modifier le 4e élément cout << "valeur après modification" << endl; for ( int i = 0; i < 5; i++ ) { cout << "vals[" << i << "] = "; cout << vals[i] << endl; } return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

改变前的值
vals[0] = 10.1
vals[1] = 12.6
vals[2] = 33.1
vals[3] = 24.1
vals[4] = 50
改变后的值
vals[0] = 10.1
vals[1] = 20.23
vals[2] = 33.1
vals[3] = 70.8
vals[4] = 50

Lorsque vous renvoyez une référence, faites attention à ce que l'objet référencé ne sorte pas de la portée. Par conséquent, renvoyer une référence à une variable locale est illégal, mais une référence à une variable statique peut être renvoyée.

int& func() { int q; //! return q; // une erreur se produit à la compilation static int x; return x; // sûr, x est toujours valide en dehors de la portée de la fonction }

Voici un exemple qui montre comment renvoyer une référence à une variable statique :

Exemple

#include <iostream>
using namespace std;

// renvoyer une référence à une variable statique
int& getStaticRef() {
    static int num = 5; // variable statique
    return num;
}

int main() {
    int& ref = getStaticRef(); // obtenir une référence à une variable statique
    cout << "valeur initiale :" << ref << endl;

    ref = 10; // modifier la valeur de la variable statique

    cout << "valeur après modification :" << ref << endl;
    cout << "valeur après avoir appelé la fonction à nouveau :" << getStaticRef() << endl;

    return 0;
}

La fonction getStaticRef() renvoie une référence à la variable statique num.

Le résultat de sortie est:

初始值:5
修改后的值:10
再次调用函数后的值:10

Références C++

autres extensions