Partilhar via


Tipo de referência função retorna

Funções podem ser declaradas para retornar um tipo de referência.Há dois motivos para fazer tal uma declaração:

  • As informações que estão sendo devolvidas são um objeto grande o suficiente que retornar uma referência é mais eficiente que retornando uma cópia.

  • O tipo da função deve ser um valor de l.

Assim como pode ser mais eficiente para passar objetos grandes para funções por referência, ele também pode ser mais eficiente para retornar objetos grandes de funções por referência.Protocolo de retorno de referência elimina a necessidade de copiar o objeto para um local temporário antes de retornar.

Tipos de retorno de referência também podem ser útil quando a função deve ser avaliada como um valor de l.Mais operadores sobrecarregados encaixam nessa categoria, particularmente o operador de atribuição.Overloaded operadores são abordadas em Operadores sobrecarregados.

Exemplo

Considere a Point exemplo:

// 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";
}

Saída

x = 7
y = 9

Observe que as funções x e y são declaradas como retornar tipos de referência.Essas funções podem ser usadas em ambos os lados de uma instrução de atribuição.

Declarações de tipos de referência devem conter inicializadores, exceto nos seguintes casos:

  • Explícito extern declaração

  • Declaração de um membro de classe

  • Declaração dentro de uma classe

  • Declaração de um argumento para uma função ou o tipo de retorno para uma função

Consulte também

Referência

Referências (C++)