【发布时间】:2021-08-22 20:04:43
【问题描述】:
我最近在阅读有关虚函数和虚析构函数的内容,引发了以下问题。
例如,我有以下继承链。
class Base
{
public:
virtual ~Base() // note: virtual
{
std::cout << "Calling ~Base()\n";
}
};
class Derived: public Base
{
public:
~Derived()
{
std::cout << "Calling ~Derived()\n";
}
};
我读到基类的虚函数在派生类中默认为隐式虚函数。所以,我认为这同样适用于析构函数。
我想知道,派生类的析构函数是否默认为虚拟。如果没有,如果您提供一些解释,我会很高兴。
【问题讨论】:
-
您也可以使用
~Derived() override { std::cout << "..."; }来确保它是一个虚函数(如果您忘记将~Base设置为虚拟函数,则使其成为编译时错误)
标签: c++ polymorphism virtual-destructor