一、虚析构函数
1、构造函数不能是虚函数
构造函数 不能定义为 虚函数 , 不能使用 virtual 关键字修饰 ;
如果要创建一个 子类的 实例对象 , 需要 从 该子类的 最上层的 父类开始 , 沿着继承路径...A 的构造函数 , 然后调用 B 的构造函数 , 最后调用 C 的构造函数 ;
参考 【C++】继承 ⑧ ( 继承 + 组合 模式的类对象 构造函数 和 析构函数 调用规则 ) 博客中 , 构造函数...; 自身定义的 析构函数 ;
然后 , 调用 成员 析构函数 ; 也就是 成员变量 类型的 析构函数 ;
最后 , 调用 父类 析构函数 ;
2、析构函数可以是虚函数
析构函数 可以是 虚函数 ;
虚析构函数...virtual ~Base() {}
};
4、虚析构函数意义
父类中使用了 虚析构函数 , 在 子类 中 , 必须 覆盖 父类 的虚析构函数 , 并且使用相同的函数签名 ;
如果 子类 没有提供自己的...虚析构函数
1、代码示例 - 没有使用虚析构函数导致子类析构函数无法调用
在下面的代码中 ,
声明 子类指针 指向 子类对象 , 释放 子类指针 时 先调用 子类析构函数 , 再调用父类析构函数 ;
声明