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

新手上路,请多包涵

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

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

原文由 missingfaktor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 332
2 个回答

经典的是纯虚析构函数:

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

abstract::~abstract() {}

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

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

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

原文由 sbi 发布,翻译遵循 CC BY-SA 2.5 许可协议

有或没有主体的纯虚函数仅仅意味着派生类型必须提供它们自己的实现。

如果您的派生类想要调用您的基类实现,则基类中的纯虚函数体很有用。

原文由 Brian R. Bondy 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题