pure virtual析构函数

来源:互联网 发布:淘宝链接生成器 编辑:程序博客网 时间:2024/06/07 15:47

代码如下:

#include <iostream>class A { public:  virtual ~A() = 0;};A::~A() {  std::cout << "A destructor!\n";}class B : public A { public:  B() {    std::cout << "B constructor invoked!\n";  }  ~B() {    std::cout << "B destructor invoked!\n";  }};int main(){  B b;  return 0;}

如果不实现A::~A(),则将出现链接错误,提示无法链接到A::~A(),究其原因是对象析构时,最深层派生(most derived class)的那个class(class B)其析构函数最先被调用,然后是其每个base class(class A)的析构函数被调用。所以此时A::~A()必须被实现,即使其被定义为pure virtual析构函数。

0 0