返回对局部变量的引用

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节规定:

允许的未定义行为包括完全忽略不可预测的结果,在翻译或程序执行期间以环境特征(有或没有发出诊断消息)的特定行为,终止翻译或执行(发布时)一条诊断信息).