首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++虚函数继承

C++虚函数继承
EN

Stack Overflow用户
提问于 2020-02-02 17:27:01
回答 1查看 37关注 0票数 0
代码语言:javascript
复制
#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,派生类的“虚拟性”是隐含的?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-02-02 17:35:17

即使析构函数不是继承的,如果基类声明它的析构函数是虚的,派生的析构函数总是重写它。这使得通过指向base的指针来删除多态类型的动态分配对象成为可能。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60024768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档