析构函数
1、特殊的成员函数
函数名必须是
~类名(void)
{
}
//没有参数、没有返回值、不能重载
2、谁来调用
析构函数会在销毁对象时自动调用,在对象整个生命周期来最多被调用一次
而构造函数一定被调用一次
3、析构函数负责什么
析构函数负责释放在构造函数期间所获取的所有资源,它的执行过程:
- 先执行析构函数本身代码
- 调用成员类的析构函数
- 调用父类的析构函数
- 缺省的析构函数
- 如果一个类没有实现析构函数,编译器会自动生成一个具有析构函数功能的二进制指令,它负责释放编译器能够看的到的资源(成员变量、类成员、父类成员),这就是缺省析构
如果一个类没有动态资源,也不需要善后工作,缺省析构就完全够用了。不需要再定义新的析构函数了
注意:缺省析构无法释放动态资源(堆内存)
类对象的创建过程与释放过程
创建:1、分配内存(对象)
2、父类构造
3、成员构造
4、自己的构造
父类构造:按照继承表从左到右依次构造
成员构造:按照声明顺序从上到下依次构造
释放:1、自己析构 (对称)
2、析构成员
3、析构父类
4、释放内存
析构成员:按照声明顺序从下到上依次构造
析构父类:按照继承表从右到左依次构造
标签:调用,函数,缺省,构造,从零开始,C++,析构,父类 来源: https://blog.csdn.net/weixin_45050225/article/details/99682453
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。