为什么不再调用c的析构函数了


#include<iostream>
using namespace std;
class A{
public:
    A(){
        cout<<"我是A构造函数"<<endl;
    }
    ~A(){
        cout<<"我是A的析构函数"<<endl;
    }
};
class B{
public:
    B(){
        cout<<"我是B构造函数"<<endl;
    }
    ~B(){
        cout<<"我是B的析构函数"<<endl;
    }
};
class C:public  A,public  B
{
public:
    C(){
        cout<<"我是C构造函数"<<endl;
    }
    ~C(){
        cout<<"我是C的析构函数"<<endl;
    }
};

int main(){
    A *a = new C();
    delete a;
    return 0;
}

输出为
我是A构造函数
我是B构造函数
我是C构造函数
我是A的析构函数

为什么不再调用c的析构函数了

原因是a指针是A类型的,如果是C*a=new C();就会调用了。

如果一个类要被继承,它的析构函数要声明为virtual,是c++基础知识点