Поделиться через


Функции ссылочного типа возврата

Функции могут быть объявлены как возвращаемые ссылочный тип.2 Причины сделать то объявление:

  • Возвращение сведения достаточно большой объект, возвращая ссылку более эффективным, чем возврат копии.

  • Тип функции должен быть l-значением.

Подобно тому, как она может оказаться более эффективным передачи больших объектов В функции по ссылке, он также может оказаться более эффективным вернуть больших объектов из функции по ссылке.Протокол Ссылка-возвращения исключает необходимость копирования объект к временному положения до возвращения.

Типы Ссылка-возвращения также могут быть полезны, когда функция должна иметь l-значению.Большинство перегруженные операторы соответствуют данной категории, в частности оператор присваивания.Перегруженные операторы рассматриваются в статье переход Перегруженные операторы.

Пример

Рассмотрим 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

Обратите внимание, что функции x и y объявите как возвращение ссылочные типы.Эти функции могут быть использованы с обеих сторон оператора назначения.

Объявления ссылочных типов должны содержать инициализаторы за исключением следующих случаев.

  • Explicit extern объявление

  • Объявление члена класса

  • Объявление внутри класса

  • Объявление аргумента функции или возвращаемому типу функции

См. также

Ссылки

Ссылки (C++)