一尘不染

带有 body 的纯虚函数的用例?

javascript

我最近才知道,在 C++ 中,纯虚函数可以有一个主体。

这些功能的实际用例是什么?


阅读 95

收藏
2022-06-02

共1个答案

一尘不染

经典的是纯虚析构函数:

class abstract {
  public: 
    virtual ~abstract() = 0;
};

abstract::~abstract() {}

你让它纯粹是因为没有别的东西可以这样做,并且你希望这个类是抽象的,但是你仍然必须提供一个实现,因为派生类的析构函数显式地调用你的析构函数。是的,我知道,这是一个非常愚蠢的教科书示例,但因此它是经典之作。它一定出现在The C++ Programming Language的第一版中。

无论如何,我不记得曾经真正需要实现纯虚函数的能力。对我来说,这个功能存在的唯一原因似乎是它必须被明确禁止,而 Stroustrup 没有看到这样做的原因。

如果您觉得需要此功能,那么您的设计可能走错了路。

2022-06-02