析构函数的工作与复制构造函数和赋值操作符不同:派生类析构函数不负责撤销基类对象
的成员。编译器总是显式调用派生类对象基类 部分的析构函数。每个析构函数只负责清除自己的成员
class Derived: public Base{
public:
// Base :: ~Base invoke automatically
~Derived()
{
// do what it takes to clean up derived members
}
};
对象的撤销顺序与构造顺序相反:首先运行派生类析构函数,然后按继承层次依次向上
调用各基类析构函数。