A pointer defined to point to an object belonging to a
particular class may also point to an object belonging to any of
that class's subclasses.
If you have an array defined to contain pointers to class objects,
and those pointers actually point to objects belonging to subclasses,
and you want to call member functions defined in those subclasses,
then you must include a virtual-function definition in the class.
If you want to define a virtual function,
then instantiate the following pattern:
virtual ordinary member function definition
A virtual function defined in one class is
automatically virtual in all that class's subclasses.