#include <iostream>
using namespace std;
class A{
public:
A(){cout<<"A"<<endl;}
virtual void g(){cout<<"Ag"<<endl;}
virtual void f(){cout<<"Af"<<endl;}
~A(){cout<<"~A"<<endl;g();}
};
class B:public A{
public:
B(){cout<<"B"<<endl;}
~B(){cout<<"~B"<<endl;g();}
virtual void g(){cout<<"Bg"<<endl;}
virtual void f(){cout<<"Bf"<<endl;}
};
int main()
{
A* b= new B;
delete b;
}
自己尝试写一下结果!
#include <iostream>
using namespace std;
class A{
public:
A(){cout<<"A"<<endl;}
virtual void g(){cout<<"Ag"<<endl;}
virtual void f(){cout<<"Af"<<endl;}
virtual ~A(){cout<<"~A"<<endl;g();}
};
class B:public A{
public:
B(){cout<<"B"<<endl;}
~B(){cout<<"~B"<<endl;g();}
virtual void g(){cout<<"Bg"<<endl;}
virtual void f(){cout<<"Bf"<<endl;}
};
int main()
{
A* b= new B;
delete b;
}
自己尝试写一下结果!
如果不理解:请参考我前面文字有关虚析构函数的文章。