首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【疑义】函数中返回局部对象的引用

2013-01-17 
【疑问】函数中返回局部对象的引用为什么函数中可以返回局部对象的引用?代码#include iostreamusing names

【疑问】函数中返回局部对象的引用
为什么函数中可以返回局部对象的引用?

代码
#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;
}

推荐一篇文章:
http://www.cnblogs.com/edwardcmh/archive/2012/03/20/2408359.html
[解决办法]
这个我之前遇到过,做过实验请看我的一篇博客:
http://blog.csdn.net/zlhy_/article/details/8184919

热点排行