如果必须返回i,以下代码(func1())是否正确?我记得在某处读到返回对局部变量的引用时存在问题.它与func2()有什么不同?
int& func1()
{
int i;
i = 1;
return i;
}
int* func2()
{
int* p;
p = new int;
*p = 1;
return p;
}
Run Code Online (Sandbox Code Playgroud) 关于为什么有必要从函数返回引用的问题.
以下代码行为完全相同,如果我们替换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)