与虚函数相关的几点注意之二——虚析构函数

来源:互联网 发布:office办公软件难学吗 编辑:程序博客网 时间:2024/06/16 09:54
【原文写于  21 January 2007 ,注】

虚析构函数

对于基类(或者设计成将被派生的类),析构函数应被声明为虚函数。虚析构函数能够保证派生类被正确析构

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

原创粉丝点击