C++虚函数继承

C++ virtual functions inheritence

本文关键字:继承 函数 C++      更新时间:2023-10-16
#include <iostream>
class a{
public:
a(){};
virtual ~a(){
std::cout << "del class a";
}
};
class b: public a{
public:
~b(){
std::cout << "del class b";
} 
};
int main(){
a *pa;
pa = new b;
delete pa;
}

嗨,我对C++相当陌生。查看上面的代码示例,class b没有虚拟析构函数,但是当程序执行时,输出为del class b然后del class a.

我想知道为什么会这样,因为我还没有在class b中创建虚拟析构函数。这是否意味着通过声明基本析构函数 virtual,派生类的"虚拟性"是隐式的? 谢谢。

即使析构函数不是继承的,如果基类声明其析构函数为 virtual,派生析构函数也始终重写它。这样就可以通过指向基的指针删除动态分配的多态类型的对象。

您可以在 Cppreference-Virtual Destructor 中找到更多信息