C++ Verwenden von Referenzen als Rückgabewerte

C++ Referenzen

Die Verwendung von Referenzen anstelle von Zeigern macht C++-Programme leichter lesbar und wartbar. C++-Funktionen können eine Referenz auf ähnliche Weise zurückgeben wie einen Zeiger.

Wenn eine Funktion eine Referenz zurückgibt, gibt sie einen impliziten Zeiger auf den Rückgabewert zurück. Auf diese Weise kann die Funktion auf der linken Seite einer Zuweisungsanweisung stehen. Betrachten Sie zum Beispiel das folgende einfache Programm:

Beispiel

#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; // gibt eine Referenz auf das i-te Element zurück; ref ist eine Referenzvariable, ref bezieht sich auf vals[i] } // Hauptfunktion zum Aufrufen der oben definierten Funktion int main () { cout << "Wert vor der Änderung" << endl; for ( int i = 0; i < 5; i++ ) { cout << "vals[" << i << "] = "; cout << vals[i] << endl; } setValues(1) = 20.23; // das 2. Element ändern setValues(3) = 70.8; // das 4. Element ändern cout << "Wert nach der Änderung" << endl; for ( int i = 0; i < 5; i++ ) { cout << "vals[" << i << "] = "; cout << vals[i] << endl; } return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

改变前的值
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

Wenn eine Referenz zurückgegeben wird, ist darauf zu achten, dass das referenzierte Objekt nicht außerhalb des Gültigkeitsbereichs gerät. Daher ist es unzulässig, eine Referenz auf eine lokale Variable zurückzugeben, aber eine Referenz auf eine statische Variable kann zurückgegeben werden.

int& func() { int q; //! return q; // Fehler tritt zur Kompilierzeit auf static int x; return x; // sicher, x ist auch außerhalb des Gültigkeitsbereichs der Funktion noch gültig }

Das folgende Beispiel veranschaulicht die Rückgabe einer Referenz auf eine statische Variable:

Beispiel

#include <iostream>
using namespace std;

// eine Referenz auf eine statische Variable zurückgeben
int& getStaticRef() {
    static int num = 5; // statische Variable
    return num;
}

int main() {
    int& ref = getStaticRef(); // eine Referenz auf eine statische Variable abrufen
    cout << "Initialwert:" << ref << endl;

    ref = 10; // den Wert der statischen Variable ändern

    cout << "Wert nach Änderung:" << ref << endl;
    cout << "Wert nach erneutem Aufruf der Funktion:" << getStaticRef() << endl;

    return 0;
}

Die Funktion getStaticRef() gibt eine Referenz auf die statische Variable num zurück.

Das Ausgabeergebnis ist:

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

C++ Referenzen

Weitere Erweiterungen