【发布时间】:2011-03-10 17:46:10
【问题描述】:
灵感来自:C++ -- why should we define the pure virtual destructor outside the class definition?
下面的代码实际上做了什么?
class Object
{
public:
virtual ~Object() = 0;
};
Object::~Object() { /*...*/ }
我认为纯虚函数的意义在于强制子类实现该特定功能。如果是这样,那为什么还要在虚拟基类中实现相同的功能呢?
【问题讨论】:
-
我无法评论纯虚析构函数,但总的来说纯虚函数的定义提供了default实现,派生类可以显式地选择执行!
-
@Nawaz:那是虚函数。我很少实现一个纯虚函数,而且在过去的十年里肯定没有这样做过。除了必须实现的纯虚拟析构函数。
-
@sbi:我说的是纯虚函数,派生可以选择运行!
-
@Nawaz:我考虑在覆盖基类虚拟时调用它们是可疑的,即使不是纯的。您是否必须将其称为 before 或 after 您自己的实现?还是在中间?还是您必须这样做?我完全赞成never。这太容易了。鉴于此,实现纯虚函数的用例是什么?
标签: c++ destructor pure-virtual