"polymorphic base class"是C++标准的一部分吗?

Is "polymorphic base class" a part of C++ standard?

本文关键字:一部分 标准 C++ polymorphic base class      更新时间:2023-10-16

对于具有虚函数的低音类,通常称为"多态基类"。在这种情况下Car

class Car
{
 virtual void drive(){std::cout << "drive right";}
};
class EuropeCar: public Car
{
 void drive(){std::cout << "drive left";}
}

polymorphic base classpure abstract class等通用俚语还是C++标准的一部分?

该标准特别提到了多态类,例如在 10.3.1 中:

虚函数支持动态绑定和面向对象 编程。声明或继承虚函数的类是 称为多态类

它还讨论了抽象类纯虚函数,如 10.4.2

抽象类是只能用作 其他一些类;不能创建抽象类的对象 除非作为派生自它的类的子对象。类是抽象的 如果它至少有一个纯虚函数

没有具体提到纯抽象类(或纯虚类(,只有纯虚函数。

注意:这是基于标准草案n3376。

C++14标准确实定义了术语"多态类"(10.3/1(:

声明或 继承的虚函数称为多态类

但它没有使用术语"多态基类"。

我不确定"俚语",但C++中的纯抽象类具有明确的含义。

C++中的纯抽象基类只有抽象成员函数(意味着它们都声明为virtual <return_type> <func_name>() = 0(,而没有数据或具体成员函数。

相比之下,这里的多态基类是一个松散得多的术语。