关于为什么有必要从函数返回引用的问题。
如果我们替换以下代码,其行为完全相同int&
with int
在第 9 行和第 16 行。
在我的示例代码中,返回引用与值并不重要吗?在什么样的例子中它会开始变得重要?
在我看来,我们无法返回函数局部变量的引用,因为局部变量将超出调用者的范围。因此,只有返回调用者可以看到(在范围内)的变量的引用才有意义,但是如果函数的调用者可以看到该变量,则不需要返回它(?)(或者这是返回这样做是为了保持代码整洁?)
相关链接:返回参考文献是个好主意吗? https://stackoverflow.com/questions/13077979/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;
}
不同之处在于,当您返回引用时,您可以分配给结果GetVal()
:
myObj.GetVal() = 42;
您还可以保留返回的引用,并使用它来修改myObj.val
later.
If GetVal()
要返回val
从价值来看,这一切都是不可能的。
这是否是可取的,或者确实是好的设计,完全是一个不同的问题。
请注意,您的示例与中的代码非常不同链接问题 https://stackoverflow.com/questions/13077979/is-returning-a-reference-ever-a-good-idea——该代码返回无效引用,这无疑是一个坏主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)