Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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