代码:
#include <iostream>
using namespace std;
class BASE
{
private:
char c;
public:
BASE(char n):c(n) {}
virtual ~BASE()
{
cout<<c;
}
};
class DERIVED:public BASE
{
private:
char c;
public:
DERIVED(char n):BASE(n+1),c(n) {}
~DERIVED()
{
cout<<c;
}
};
int main()
{
DERIVED d('X');
return 0;
}
运行结果:
学习心得:
如果将基类的析构函数声明为虚函数时,由该基类所派生的所有派生类的析构函数也都自动成为虚函数,即使基类和派生类析构函数的名字不同。当基类的析构函数为虚函数时,无论指针指的是同一类组中的哪一个类对象,系统都会采用动态关联,调用相关类的析构函数,对该对象进行清理工作。