从零开始的C++(析构函数)

析构函数

1、特殊的成员函数
函数名必须是

			~类名(void)
			{

			}

			//没有参数、没有返回值、不能重载

2、谁来调用
析构函数会在销毁对象时自动调用,在对象整个生命周期来最多被调用一次
而构造函数一定被调用一次
3、析构函数负责什么
析构函数负责释放在构造函数期间所获取的所有资源,它的执行过程:

  • 先执行析构函数本身代码
  • 调用成员类的析构函数
  • 调用父类的析构函数
  • 缺省的析构函数
  • 如果一个类没有实现析构函数,编译器会自动生成一个具有析构函数功能的二进制指令,它负责释放编译器能够看的到的资源(成员变量、类成员、父类成员),这就是缺省析构
    如果一个类没有动态资源,也不需要善后工作,缺省析构就完全够用了。不需要再定义新的析构函数了
    注意:缺省析构无法释放动态资源(堆内存)

    类对象的创建过程与释放过程
    创建:1、分配内存(对象)
    2、父类构造
    3、成员构造
    4、自己的构造
    父类构造:按照继承表从左到右依次构造
    成员构造:按照声明顺序从上到下依次构造
    释放:1、自己析构 (对称)
    2、析构成员
    3、析构父类
    4、释放内存
    析构成员:按照声明顺序从下到上依次构造
    析构父类:按照继承表从右到左依次构造

猜你喜欢

转载自blog.csdn.net/weixin_45050225/article/details/99682453