C++局部对象的析构
2015-11-01 20:14
274 查看
class A { public: A Func(); ...... } A A::Func() { A temp; ...... return temp; }
类A的成员函数Func()返回了一个局部变量。
在执行到return temp语句时
1.先调用一次拷贝构造函数复制一个temp的临时副本_temp,返回的对象是该副本;
2.然后调用析构函数析构temp;
3.当调用Func()的语句执行完毕后,会再次调用析构函数析构_temp;
如果类中有指针成员使用了动态分配内存,就需要重写拷贝构造函数,因为默认拷贝构造函数只是浅拷贝,temp和_temp的指针成员指向的是同一块内存,然后析构temp和_temp时,同一块内存会被析构两次,此时程序就会出错;
相关文章推荐
- C++中拷贝构造函数的应用详解
- c语言全局变量和局部变量问题及解决汇总
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- sqlserver 局部变量的使用
- 构造函数不能声明为虚函数的原因及分析
- 深入讲解C++中的构造函数
- C++类成员构造函数和析构函数顺序示例详细讲解
- 全局变量与局部变量在内存中的区别详细解析
- c++基础语法:构造函数与析构函数
- php析构函数的简单使用说明
- JavaScript 构造函数 面相对象学习必备知识
- 关于全局变量和局部变量的那些事
- JavaScript面向对象设计二 构造函数模式
- Javascript面向对象编程(二) 构造函数的继承
- 成员初始化列表与构造函数体中的区别详细解析
- C#中私有构造函数的特点和用途实例解析
- C#中派生类调用基类构造函数用法分析
- C#静态构造函数用法实例分析
- java 对象和局部变量,全局变量。
- Swift构造函数