我最近才知道,在 C++ 中,纯虚函数可以有一个主体。
这些功能的实际用例是什么?
经典的是纯虚析构函数:
class abstract { public: virtual ~abstract() = 0; }; abstract::~abstract() {}
你让它纯粹是因为没有别的东西可以这样做,并且你希望这个类是抽象的,但是你仍然必须提供一个实现,因为派生类的析构函数显式地调用你的析构函数。是的,我知道,这是一个非常愚蠢的教科书示例,但因此它是经典之作。它一定出现在The C++ Programming Language的第一版中。
无论如何,我不记得曾经真正需要实现纯虚函数的能力。对我来说,这个功能存在的唯一原因似乎是它必须被明确禁止,而 Stroustrup 没有看到这样做的原因。
如果您觉得需要此功能,那么您的设计可能走错了路。