2003: 10.3/1
ясно заявляет:
Класс, который объявляет или наследует виртуальную функцию, называется полиморфным классом.
Вы на самом деле сказали это, словонапример, поэтому я не совсем понимаю, в чем вопрос.
C
(и его потомки, если вы добавите их) полиморфны;A
и B
не являются.
Обратите внимание, что в более широком смысле ООП вы всегда можете выполнить некоторый «полиморфизм», в котором C ++ всегда позволяетВы, чтобы upcast;таким образом, все объекты, которые наследуют, могут рассматриваться как разные (но связанные) типы.
Однако термин «полиморфный» определяется немного по-другому в C ++, где он имеет больше общего сможете ли вы также downcast .Если вы не хотите сбивать с толку, как в стандарте C ++, вы можете назвать это «динамическим полиморфизмом».