C ++中是否始终存在纯虚拟方法?

时间:2019-06-17 18:58:26

标签: c++ language-lawyer abstract-class virtual-functions pure-virtual

我在工作项目中发现了一些代码,当子类没有重写基类函数时,该代码会引发错误(实际上,使用此实用程序的基类实际上是抽象的)。当我看到此消息时,我的第一个反应是:“为什么他们不使这些方法成为纯虚拟方法?”但是,有问题的代码已有15年的历史了,我不确定是否创建该代码是为了填补纯虚拟设备以后会填补的空白(假设当时不存在)。

  • 如果自那时以来存在纯虚拟方法,是否有任何理由为其提供附加或替代功能? (我意识到这可能是主观的,但我什至没有起点)。

  • 如果没有,是否有任何文档指出引入这些标准的标准?

1 个答案:

答案 0 :(得分:6)

自第一个官方C ++ 98标准以来(甚至可能更早),已经存在(始终)有纯虚函数。

请参阅ISO / IEC 14882:1998 [class.abstract]

  

如果一个类至少具有一个纯虚函数,则该类是抽象的。

在Stroustrup的“ C ++历史:1979- 1991”(pdf)中,他做了更多的挖掘工作,他提到抽象类在1989年左右出现。

  

“ 2.0发行前添加的最后一项功能是抽象类”