虚析构函数
对于基类(或者设计成将被派生的类),析构函数应被声明为虚函数。虚析构函数能够保证派生类被正确析构
class ClassBase
{
public:
~ClassBase() { printOut(”Deconstructor in Base Class”); }
};class ClassDerived : public ClassBase
{
public:
~ClassDerived() { printOut(”Deconstructor in Derived Class”); }
};void main()
{
ClassBase p = new ClassDerived;
delete p;
}
将打印”Deconstructor in Base Class”
class ClassBase
{
public:
virtual ~ClassBase() { printOut(”Deconstructor in Base Class”); }
};class ClassDerived : public ClassBase
{
public:
~ClassDerived() { printOut(”Deconstructor in Derived Class”); }
};void main()
{
ClassBase p = new ClassDerived;
delete p;
}
将打印
”
Deconstructor in Derived Class
Deconstructor in Base Class
“