C++虚函数继承
C++ virtual functions inheritence
#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 中找到更多信息
相关文章:
- 继承函数的重载解析
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 派生类调用使用非继承成员的继承函数
- 继承函数是否适用于 C++ 中的基类元素或派生类元素?
- 在链表中的某个点插入时出现问题,C++中的继承函数
- std :: is_same-来自integral_constant的继承函数的用例
- 如何将同名的继承函数视为重载函数
- 使用子函数的继承函数
- 执行覆盖的继承函数
- 相对于更专业的继承函数,模板更喜欢子类函数
- C++:继承函数并重新定义它们
- C++ 继承函数指针,可与派生方法一起使用
- 不同对象的向量,对象具有非继承函数
- C++多级继承函数调用
- 基类指向派生类继承函数调用的指针
- C++继承函数覆盖
- 派生类是否C++必须在头文件中包含继承函数/成员的定义
- 继承函数中的参数消失
- C++通过继承函数实现继承的抽象函数
- 构造函数和继承函数 c++