Compartir a través de


Retornos de función de tipo de referencia

las funciones se pueden declarar para devolver un tipo de referencia.Hay dos motivos para realizar este tipo de declaración:

  • La información que se devuelva es suficiente para un objeto que devuelva una referencia es más eficaz que devuelve una copia.

  • El tipo de la función debe ser un valor l.

Igual que puede ser más eficaz transferir objetos grandes a funciones por referencia, también puede ser más eficaz devolver objetos grandes de funciones por referencia.el protocolo de Referencia-retorno elimina la necesidad de copiar el objeto en una ubicación temporal antes de volver.

los tipos de Referencia-retorno también pueden ser útiles cuando la función se debe evaluar como un valor l.La mayoría de los operadores sobrecargados pertenecen a esta categoría, especialmente el operador de asignación.Cubren los operadores sobrecargados de operadores sobrecargados.

Ejemplo

considere el ejemplo de Point :

// 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

Observe que las funciones x y y se declaradas como devolver tipos de referencia.estas funciones se pueden utilizar a cada lado de una instrucción de asignación.

las declaraciones de tipos de referencia deben contener inicializadores excepto en los casos siguientes:

  • declaración explícita de extern

  • Declaración de miembro de clase

  • declaración dentro de una clase

  • Declaración de un argumento de una función o tipo de valor devuelto para una función

Vea también

Referencia

Referencias (C++)