【发布时间】:2013-04-06 06:36:08
【问题描述】:
关于为什么有必要从函数返回引用的问题。
如果我们将第 9 行和第 16 行中的int& 替换为int,则以下代码的行为完全相同。
在我的示例代码中是否如此,返回引用与值无关紧要?在什么样的例子中它会开始变得重要?
在我看来,我们不能返回函数的局部变量的引用,因为局部变量将超出调用者的范围。因此,仅返回调用者可以看到(在范围内)的变量的引用才有意义,但是如果函数的调用者可以看到该变量,则不需要返回(?)(或者这是返回为了保持代码整洁而做的?)
相关链接:Is returning a reference ever a good idea?
#include <iostream>
using namespace std;
class myClass{
private:
int val;
public:
myClass(int);
int& GetVal();
};
myClass::myClass(int x){
val = x;
}
int& myClass::GetVal(){
return val;
}
int main()
{
myClass myObj(666);
cout << myObj.GetVal() << endl;
system("pause");
return 0;
}
【问题讨论】:
-
如果将结果分配给参考变量然后修改该变量,可以看出差异。如果您只在表达式中使用结果,则没有区别。