Zwraca funkcję typ odwołania
Funkcje mogą być deklarowane do zwracany typ odwołania.Istnieją dwa powody takiego oświadczenia:
Informacje są zwracane jest obiekt wystarczająco duże, że zwracając odwołanie jest bardziej wydajny niż zwracanie kopii.
Typ funkcji musi być wartością l.
Podobnie jak może być bardziej efektywne, aby przekazać dużych obiektów do funkcji przez odniesienie, również może być bardziej efektywne, aby powrócić do dużych obiektów z funkcji przez odniesienie.Protokół zwrotu odniesienia eliminuje konieczność kopiowania obiektu do lokalizacji tymczasowej przed do powrotu.
Typy zwrotu odniesienia mogą być również użyteczne, gdy funkcja musi dawać w wyniku wartość l.Najbardziej przeciążone operatory należą do tej kategorii, szczególnie operatorem przypisania.Objęte są operatorzy Overloaded Przeciążone operatory.
Przykład
Należy wziąć pod uwagę Point przykład:
// 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";
}
Dane wyjściowe
x = 7
y = 9
Warto zauważyć, że funkcje x i y są deklarowane jako przekazujących dane typy odwołań.Te funkcje mogą służyć po dowolnej stronie instrukcji przypisania.
Deklaracje typów odwołań musi zawierać inicjatorów, z wyjątkiem następujących przypadków:
Jawne extern zgłoszenia
Deklaracja członka klasy
Deklaracja klasy
Deklaracja argumentu dla funkcji lub typ zwracany dla funkcji