关于为什么有必要从函数返回引用的问题.
以下代码行为完全相同,如果我们替换int&为intline9和line16.
在我的示例代码中是真的,返回引用与值无关紧要吗?在什么样的例子中,它将开始重要?
在我看来,我们无法返回函数的局部变量的引用,因为局部变量将超出调用者的范围.因此,返回调用者可以看到的变量的引用(在范围内)才有意义,但是如果函数的调用者可以看到变量,那么它不需要返回(?)(或者这是返回的)是为了保持代码干净整洁?)
相关链接:返回引用是个好主意吗?
#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;
}
Run Code Online (Sandbox Code Playgroud)
不同之处在于,当您返回引用时,您可以分配给结果GetVal():
myObj.GetVal() = 42;
Run Code Online (Sandbox Code Playgroud)
您还可以保留返回的引用,并在myObj.val以后使用它进行修改.
如果GetVal()要按val价值返回,这一切都不可能.
无论这些是否合乎需要,或者确实是好的设计,都是完全不同的问题.
请注意,您的示例与链接问题中的代码非常不同- 该代码返回无效引用,并且毫无疑问是个坏主意.
| 归档时间: |
|
| 查看次数: |
3255 次 |
| 最近记录: |