0%

详解派生类构造函数与析构函数

2020年3月2日 下午11:01

详解派生类构造函数与析构函数 - Acelit - 博客园

c++特殊的地方:

  1. 派生类的构造函数:
    • 派生类不能继承基类的构造函数,必须自己定义构造函数进行新增数据成员初始化工作,如果想同时初始化基类数据成员,必须调用基类构造函数。
  2. 派生类的析构函数:
    • 正如派生类不能继承基类的构造函数,派生类也不能继承基类的析构函数,派生类的清理工作由派生自身析构函数负责,基类的清理工作由基类析构函数负责。
    • 析构函数的调用顺序正好和构造函数调用顺序相反,即先调用派生类析构函数清理新增的成员,再调用子对象析构函数(基类析构函数)清理子对象,最后再调用基类析构函数清理基类成员。
    • 注意:有一种情况下不用再派生类中指定析构函数也可以正常的析构:
      • 实现的方式是通过虚函数表!
      • 基类析构函数声明为虚函数
        • 该基类所有派生类也将自动成为虚函数,所有虚析构函数的入口地址都会存放在一个虚函数表(指针数组)中,查找方便,这样就避免了无法调用派生类析构函数所造成的内存泄漏问题了
      • 这里面的具体逻辑我不知道,过段时间我肯定忘了,这个知识点目前就死记忆吧!