La funzione restituisce il tipo di riferimento
È possibile dichiarare le funzioni restituire un tipo di riferimento.Esistono due motivi apportare tale dichiarazione:
Le informazioni restituite da un oggetto è sufficiente che restituiscono un riferimento è più efficiente di restituendo una copia.
Il tipo di funzione deve essere un l-value.
Come può essere più efficace passare oggetti di grandi dimensioni in funzioni per riferimento, anche può essere più efficace restituire oggetti di grandi dimensioni da funzioni per riferimento.il protocollo di Riferimento-ritorno elimina la necessità di copia dell'oggetto in un percorso temporaneo prima della restituzione.
i tipi di Riferimento-ritorno possono rivelarsi utili quando la funzione deve restituire un l-value.La maggior parte del passaggio dell'overload degli operatori in questa categoria, in particolare l'operatore di assegnazione.Operatori di overload sono illustrate in operatori di overload.
Esempio
considerare Point esempio:
// 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
Si noti che le funzioni x e y vengono dichiarati come restituire i tipi di riferimento.Tali funzioni possono essere utilizzate su entrambi i lati di un'istruzione di assegnazione.
Le dichiarazioni dei tipi di riferimento devono contenere gli inizializzatori tranne nei seguenti casi:
esplicito extern dichiarazione
Dichiarazione del membro di classe
Dichiarazione all'interno di una classe
Dichiarazione di un argomento di una funzione o al tipo restituito da una funzione