引用类型的函数返回

函数可以声明返回引用类型。 有两个原因进行这种声明:

  • 返回的信息是一个足够大对象返回与将返回复制有效。

  • 函数的类型必须是左值。

正会更高效传递 函数的大型对象引用,也可以更为有效返回 函数的大型对象引用。 引用返回协议在返回之前消除复制到临时位置的对象必要性。

,因此当函数必须计算为左值时,引用返回类型也很有用。 大多数重载运算符属于此类别,尤其是赋值运算符。 重载运算符在 重载运算符中。

示例

考虑 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 声明,则返回引用类型。 这些功能可以在赋值语句中每一端。

声明引用类型必须包含除在以下情况下的初始值设定项:

  • 显式声明 extern

  • 类成员的说明

  • 在类中声明

  • 参数的说明对函数或返回类型的功能

请参见

参考

引用(C++)