LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 235|回复: 0

引用类型函数返回

[复制链接]
发表于 2024-2-4 23:18:46 | 显示全部楼层 |阅读模式
可将函数声明为返回引用类型。 做出此类声明有两个原因:

返回的信息是一个返回引用比返回副本更有效的足够大的对象。

函数的类型必须为左值。

引用的对象在函数返回时不会超出范围。

正如通过引用传递大型对象 to 函数会更有效一样,通过引用返回大型对象 from 函数也会更有效。 引用返回协议使得不必在返回前将对象复制到临时位置。

当函数的计算结果必须为左值时,引用返回类型也可能很有用。 大多数重载运算符属于此类别,尤其是赋值运算符。 重载运算符中介绍了重载运算符。


请考虑 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:
// Note that these are declared at class scope:
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 被声明为返回引用类型。 这些函数可在赋值语句的每一端上使用。

另请注意在 main 中,ThePoint 对象停留在范围中,因此其引用成员仍处于活动状态,可以安全地访问。

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

显式 extern 声明

类成员的声明

类中的声明

函数的自变量或函数的返回类型的声明

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表