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

DaB*_*oba 1 c++ abstract-class virtual-functions pure-virtual language-lawyer

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

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

  • 如果没有,是否有任何文献指出哪个标准引入了它们?

And*_*dyG 6

自第一个官方C ++ 98标准以来(甚至可能更早),纯虚拟函数就一直存在。

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

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

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

“在发布前2.0中添加的最后一个功能是抽象类”