#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++基础知识点