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

Have pure virtual methods always existed in C++?

本文关键字:虚拟 方法 存在 C++      更新时间:2023-10-16

>我在工作项目中发现了一些代码,当子类没有覆盖基类函数时会抛出错误(本质上,使用此实用程序的基类实际上是抽象的(。当我看到这个时,我的第一反应是,"他们为什么不把这些方法变成纯粹的虚拟方法呢?但是,有问题的代码已有~15年的历史,我不确定它是否是为了填补纯虚拟以后会填补的空白而创建的(假设当时它不存在(。

  • 如果从那时起就存在纯虚拟方法,那么有什么理由为它们提供附加或替代功能吗?(我意识到这可能是主观的,但我在这里甚至没有起点(。

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

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

参考ISO/IEC 14882:1998 [类摘要]

如果一个类至少有一个纯虚函数,那么它就是抽象的。

在Stroustrup的"C++史:1979−1991"(pdf(中,他提到了抽象类在1989年左右出现。谚语

"在发布之前添加到 2.0 中的最后一个功能是抽象类">