如何解决如果基类析构函数是虚拟的,那么派生类的析构函数是否默认为虚拟?
例如,我有以下继承链。
class Base
{
public:
virtual ~Base() // note: virtual
{
std::cout << "Calling ~Base()\n";
}
};
class Derived: public Base
{
public:
~Derived()
{
std::cout << "Calling ~Derived()\n";
}
};
我读到基类的虚函数在派生类中默认为隐式虚函数。所以,我认为这同样适用于析构函数。
我想知道,派生类的析构函数是否默认是虚拟的。如果没有,如果您提供一些解释,我会很高兴。
解决方法
我认为这同样适用于析构函数
确实如此,是的。
我想知道,派生类的析构函数是否默认为virtual
在这个例子中,是的。
一旦某事物被标记为 virtual
,该事物的所有覆盖后代也都是 virtual
,无论它们是否明确声明。
所以,如果一个方法是 virtual
,所有覆盖它的派生方法也是 virtual
。如果析构函数是 virtual
,则所有派生的析构函数也是 virtual
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。