C++ 当类中存在虚函数时,隐式生成的析构函数也是虚函数吗?

C++ 当类中存在虚函数时,隐式生成的析构函数也是虚函数吗?,c++,destructor,virtual-destructor,C++,Destructor,Virtual Destructor,假设我们有一节课 class A { virtual void f(); }; 默认析构函数是虚拟的吗?否。析构函数总是非虚拟的,除非你明确地说它是虚拟的,或者这个类有一个带有虚拟的析构函数的基类。嗯,我想我刚刚在我的代码中发现了一个严重的内存泄漏。。。谢谢你的快速回复!这是不是本着“不用就不用付钱”的精神?(也就是说,它不需要是虚拟的,除非您是从继承的,是的,我知道虚拟函数会表明这一点,但是…@Borleader如果您是从它继承的,析构函数甚至不需要是虚拟的。只在多态性删除时才需要它

假设我们有一节课

class A
{
    virtual void f();
};

默认析构函数是虚拟的吗?

。析构函数总是非虚拟的,除非你明确地说它是虚拟的,或者这个类有一个带有虚拟的析构函数的基类。

嗯,我想我刚刚在我的代码中发现了一个严重的内存泄漏。。。谢谢你的快速回复!这是不是本着“不用就不用付钱”的精神?(也就是说,它不需要是虚拟的,除非您是从继承的,是的,我知道虚拟函数会表明这一点,但是…@Borleader如果您是从它继承的,析构函数甚至不需要是虚拟的。只在多态性删除时才需要它。@juanchopanza是的,我知道,我忽略了这一点,因为注释长度很长,没有必要得到我想要的答案,但我想重要的是不要让其他用户看到这个答案和它的注释。感谢您指出这一点。我要补充的是,该类已经是多态的,它支持
typeid
dynamic\u cast
的多态行为。也就是说,不需要虚拟析构函数。但是,通过指向基类的指针,
delete
需要它。