2003: 10.3/1 clearly indicates:
A class that declares or inherits a virtual function is called a polymorphic class.
You said it yourself, literally, so I really don’t understand what the question is.
C (and its descendants, if you add them) are polymorphic; A and B are not.
Note that in the broader sense of OOP, you can always perform some “polymorphism” in that C ++ always allows you to speed up; thus, all objects that inherit can be considered as different (but related) types.
However, the term “polymorphic” is somewhat different in C ++, where it has more in common with whether it can also be flushed down. If you don't want to be misled like the C ++ standard, you can call this "dynamic polymorphism."
source share