【疑问】函数中返回局部对象的引用
为什么函数中可以返回局部对象的引用?
代码
#include <iostream>
using namespace std;
int& Func()
{
int x = 0;
cout<<"Address in local scope: "<<&x<<endl;
return x;
}
int main()
{
cout<<"Address in global scope: "<<&Func()<<endl;
return 0;
}
运行结果
疑问
代码中的局部变量在函数执行结束时没有被销毁?
上面的机制是怎么实现的?
望大神解答! iostream 引用 函数返回值 返回引用
[解决办法]
图片挂了,你是说这个编译器不报错?不应该啊
[解决办法]
地址是存在着,但那个位置上的数据已经无效了。
[解决办法]
变量被销毁,不代表变量曾经待过的地址被销毁啊。
你输出地址当然是一样的。
#include <iostream>
using namespace std;
int& Func()
{
int x = 0;
//cout<<"Address in local scope: "<<&x<<endl;
cout<<"Value in local scope: "<<x<<endl;
return x;
}
int main()
{
//cout<<"Address in global scope: "<<&Func()<<endl;
cout<<"Value in global scope: "<<Func()<<endl;
return 0;
}