virtual specifier — Polymorphic function specifier or shared base class
function-specifier := virtual base-modifiers ::= virtual [access-specifier] | access-specifier [virtual]
The virtual
keyword has two
unrelated uses; it is used in virtual functions and virtual base
classes:
As a function specifier, virtual
can be used only with a
nonstatic member function. It makes the function and class
polymorphic. A virtual function can be declared with =
0
after the function header, which means the function is abstract.
You cannot create an instance of a class with an abstract
function; instead, a derived class must override the function. You
can create an instance of the derived class.
Using virtual
as a
base-class modifier means the base class subobject is shared when
it is used more than once in an inheritance graph.