我在下面的代码中很困惑,这在VS2012 Update 5中有效但在g ++ 8.1中失败了.
int& func()
{
int i = 0;
return i;
}
int main()
{
int ri = func();
ri++;
std::cout << ri << std::endl; // output "1"
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解并参考类似的问题C++返回对局部变量的引用,它应该失败,因为i
函数中的局部变量的生命周期func
应该在函数调用之后结束.
但是,为什么它在VS2012中有效?
这让我无法入睡.
更新v1:
添加VS2012指定版本并更改代码以使用变量ri
.
归档时间: |
|
查看次数: |
79 次 |
最近记录: |