C++ 中一直存在纯虚方法吗?
Have pure virtual methods always existed in C++?
我在一个工作项目中发现了一些代码,当 child class 没有覆盖基 class 函数(本质上,基 class 是使用此实用程序实际上是抽象的)。当我看到这个时,我的第一反应是,"Why don't they just make those methods pure virtual?" 然而,有问题的代码已有 15 年的历史了,我不确定它是否是为了填补纯虚拟稍后会填补的空白而创建的(假设当时不存在)。
如果从那时起就存在纯虚拟方法,是否有任何理由为它们提供额外的或替代的功能? (我意识到这可能是主观的,但我在这里甚至没有起点)。
如果没有,是否有任何文档指出引入它们的标准?
自第一个官方 C++98 标准(可能更早)以来,纯虚函数就(一直)存在。
参考ISO/IEC 14882:1998 [class.abstract]
A class is abstract if it has at least one pure virtual function.
进一步挖掘,在 Stroustrup 的 "A History of C++: 1979− 1991" (pdf) 中,他提到抽象 类 在 1989 年左右出现。说
"The very last feature added to 2.0 before it shipped was abstract classes"
我在一个工作项目中发现了一些代码,当 child class 没有覆盖基 class 函数(本质上,基 class 是使用此实用程序实际上是抽象的)。当我看到这个时,我的第一反应是,"Why don't they just make those methods pure virtual?" 然而,有问题的代码已有 15 年的历史了,我不确定它是否是为了填补纯虚拟稍后会填补的空白而创建的(假设当时不存在)。
如果从那时起就存在纯虚拟方法,是否有任何理由为它们提供额外的或替代的功能? (我意识到这可能是主观的,但我在这里甚至没有起点)。
如果没有,是否有任何文档指出引入它们的标准?
自第一个官方 C++98 标准(可能更早)以来,纯虚函数就(一直)存在。
参考ISO/IEC 14882:1998 [class.abstract]
A class is abstract if it has at least one pure virtual function.
进一步挖掘,在 Stroustrup 的 "A History of C++: 1979− 1991" (pdf) 中,他提到抽象 类 在 1989 年左右出现。说
"The very last feature added to 2.0 before it shipped was abstract classes"