#include <iostream>
using namespace std;
//虚析构函数
class A{
public :
char *p;
A(){
p=new char[66];
cout<<"A的构造"<<endl;
}
virtual ~A(){//没有virtual的话下方deleteq函数在引入b的的对象时不会对B进行析构 即无法实现多态
cout<<"A的析构"<<endl;
delete p;
}
} ;
class B:public A{
public :
char *q;
B(){
q=new char[66];
cout<<"B的构造"<<endl;
}
~B(){
cout<<"B的析构"<<endl;
delete q;
}
} ;
void deleteq(A *p){//要实现多态,必须实现虚函数 .如果不实现虚析构函数则造成内存泄露。
delete p;
}
int main(){
B *a=new B;
deleteq(a);
A *w=new A;
delete(w);
}