Tag: virtual destructor

虚拟析构函数是inheritance的吗?

如果我有一个虚拟析构函数的基类。 有一个派生类来声明一个虚拟析构函数吗? class base { public: virtual ~base () {} }; class derived : base { public: virtual ~derived () {} // 1) ~derived () {} // 2) }; 具体问题: 是1)和2)是一样的吗? 是2)自动虚拟,因为它的基础或是它“停止”虚拟? 如果没有任何关系,派生的析构函数可以省略吗? 声明派生析构函数的最佳做法是什么? 声明它是虚拟的,非虚拟的或者如果可能的话省略它?

什么时候不应该使用虚拟析构函数?

有没有一个很好的理由不申报一个类的虚拟析构函数? 你应该什么时候专门避免写一个?

为什么要在C ++中声明一个抽象类的虚析构函数?

我知道在C ++中为基类声明虚析构函数是一个很好的习惯,但是对于作为接口起作用的抽象类声明virtual析构函数总是很重要的。 请提供一些原因和示例。