sra*_*mij 3 c++ compiler-construction pass-by-reference
可能重复:
可以在其范围之外访问局部变量的内存吗?!
这是一个代码:
#include <iostream>
using namespace std;
double &GetSomeData()
{
double h = 46.50;
double &hRef = h;
return hRef;
}
int main()
{
double nonRef = GetSomeData();
double &ref = GetSomeData();
cout << "nonRef: " << nonRef << endl;
cout << "ref: " << ref << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
nonRef打印好了,因为46.5参考不正常.
第一个输出行为是正确还是刚运气?
谢谢
Alo*_*ave 10
是的,你很幸运.
返回对局部变量的引用是Undefined Behavior.未定义的行为意味着任何事情都可能发生,并且无法定义行为.
关于未定义的行为,
C++标准第1.3.24节规定:
允许的未定义行为包括完全忽略不可预测的结果,在翻译或程序执行期间以环境特征(有或没有发出诊断消息)的特定行为,终止翻译或执行(发布时)一条诊断信息).