我有以下函数(用 Visual C++ 2005 编写)
int &getInt_1()
{
int a = 5;
int &p = a;
int p1 = p; // Line 1
return p1;
}
int &getInt_2()
{
int a = 5;
int &p = a;
return p;
}
据我所知,以上两个函数都返回局部变量的地址。如果我是对的,那么我有一些问题如下:
以上功能有什么区别?为什么
getInt_1()
会收到编译器的警告(“返回局部变量的地址”
)而getInt_2()
不会?第 1 行
是什么意思?在第 1 行
之后,p1
是否也成为对a
的引用?
最佳答案
getInt_1
返回对 p1 的引用。getInt_2
返回对 a 的引用。两者都是相同的未定义行为,不要这样做。 VC 应该对两者都给出警告。- 不,您只需复制值。
关于c++ - 这些本地函数的返回地址之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410208/