Verweistyp-Funktionsrückgaben

Funktionen können deklariert werden, um einen Verweistyp zurückzugeben.Es gibt zwei Gründe für eine derartige Deklaration auszugeben:

  • Die Informationen, die zurückgegeben werden, sind ein Objekt so groß, dass beim Zurückgeben eines Verweises ist effizienter als eine Kopie zurück.

  • Der Typ der Funktion muss ein L-Wert sein.

Ebenso wie es effizienter sein kann, große Objekte auf Funktionen als Verweis zu übergeben, kann es effektiver sein, große Objekte von Funktionen als Verweis zurückgegeben.REFERENCE-RETURN-Protokoll beseitigt die Notwendigkeit des Kopierens des Objekts zu einem temporären Verzeichnis vor der Rückgabe.

REFERENCE-RETURN-Typen können auch nützlich sein, wenn die Funktion in einem l-Wert ausgewertet werden muss.Die meisten überladenen Operatoren in diese Kategorie fallen, vor allem der Zuweisungsoperator.Überladene Operatoren werden in Überladene Operatorenbehandelt.

Beispiel

Betrachten Sie das Point Beispiel:

// refType_function_returns.cpp
// compile with: /EHsc

#include <iostream>
using namespace std;

class Point
{
public:
// Define "accessor" functions as
//  reference types.
unsigned& x();
unsigned& y();
private:
unsigned obj_x;
unsigned obj_y;
};

unsigned& Point :: x()
{
return obj_x;
}
unsigned& Point :: y()
{
return obj_y;
}

int main()
{
Point ThePoint;
// Use x() and y() as l-values.
ThePoint.x() = 7;
ThePoint.y() = 9;

// Use x() and y() as r-values.
cout << "x = " << ThePoint.x() << "\n"
<< "y = " << ThePoint.y() << "\n";
}

Output

x = 7
y = 9

Beachten Sie, dass die Funktionen x und Zurückgeben von Verweistypen als y deklariert werden.Diese Funktionen können von einer Zuweisungsanweisung auf beiden Seiten verwendet werden.

Deklarationen von Verweistypen Initialisierer müssen außer in die folgenden Fälle enthalten:

  • Explizite Deklaration extern

  • Deklaration eines Klassenmembers

  • Deklaration in einer Klasse

  • Deklaration eines Arguments an eine Funktion oder einen Rückgabetyp für eine Funktion

Siehe auch

Referenz

Verweise (C++)