【发布时间】:2012-10-06 18:50:57
【问题描述】:
Scott 在《Effective C++, 3rd Edition, pg.》上说。 43 要创建一个抽象类,我们只需要给它一个纯虚析构函数:
class AWOV { // AWOV = "Abstract w/o Virtuals"
public:
virtual ~AWOV() = 0; // declare pure virtual destructor
};
然后,他接着说有一个转折:我们必须为纯虚析构函数提供一个定义:
AWOV::~AWOW() {} // definition of pure virtual dtor
我的问题是,通过指定= 0,对于纯虚函数,我们说该函数不能对声明这个纯虚函数的类有任何定义。
为什么在这里为纯虚析构函数提供定义(即使是空的)也可以?
【问题讨论】:
-
因为基类必须在派生类死亡时调用它。
-
您可以为任何纯虚函数提供定义。
-
Effective C++中有一个实现纯虚函数的例子。 pp166-167,但您可能必须阅读第 34 条的全部内容才能了解上下文。
标签: c++ class polymorphism virtual-functions