• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
BeyondTechnology
博客园    首页    新随笔    联系   管理    订阅  订阅

返回局部变量、局部变量的引用和指向局部变量的指针

当返回局部对象的值时,会产生一个临时对象,局部对象将值拷贝给该临时对象(拷贝构造),
所以当函数结束时,尽管局部已经析构了,但是它保存了一个副本在临时对象中,当函数接收完局部对象的值后(其实此时又进行了一次拷贝)临时对象析构。
但返回局部对象的引用时,就出问题了,因为引用相当于是一个别名,也就是说返回局部引用所对应的内存快的内容给函数返回的接收对象,当函数结束时,局部对象被析构,内

存块的内容变为未定义内容,所以出错。指针也是同样的原因。


为 class A 重载一个拷贝构造函数

#include <iostream>
using namespace std;

class A
{
public:
    A()
    {
        cout<<"本体"<<endl;
    }
    A(const A& CA)
    {
        cout<<"分身"<<endl;
    }
    ~A()
    {

    }
};

A fun();

int main()
{
    fun();
    return 0;
}

A fun()
{
    A a;
    return a;
}


然后再跑跑代码看看。


 

posted @ 2010-10-13 20:38  BeyondTechnology  阅读(2078)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3