#include <iostream>
#include <string>
using namespace std;
class Base{
public:
class Deriv: public Base{
public:
~Deriv(){cout<<"Deriv destrutor"<<endl;}
};
class C: public Deriv{
~C(){ cout<<"C destrutor"<<endl;}
};
int main()
{
Base* p = new Base();
delete p;
Base* q = new Deriv();
delete q;
Deriv* t = new C();
delete t;
}
#include <string>
using namespace std;
class Base{
public:
virtual ~Base(){cout<<"Base destrutor"<<endl;} ///虚析构函数
/*再添加virtual的情况下,
Base* q = new Deriv();
delete q;
如基类指针指向派生类,那么删除基类指针的时候将调用派生类指针和基类指针。
*/
};
class Deriv: public Base{
public:
~Deriv(){cout<<"Deriv destrutor"<<endl;}
};
class C: public Deriv{
~C(){ cout<<"C destrutor"<<endl;}
};
int main()
{
Base* p = new Base();
delete p;
Base* q = new Deriv();
delete q;
Deriv* t = new C();
delete t;
}