Why should the destructor of base classes be virtual?

前端 未结 5 1271
长情又很酷
长情又很酷 2021-02-05 19:14

in C++: Why should the destructor of base classes be virtual?

5条回答
  •  轮回少年
    2021-02-05 19:52

    For situations like this:

    class A
    {
        virtual ~A();
    };
    
    class B:A
    {
        ~B();
    };
    
    A *a = new B(); //legal, since it's a downcast
    delete a; //Unless the destructor is virtual, ~A() is called here instead of ~B().
    

提交回复
热议问题