Overriding...4 Requirements
Pure polymorphism requires four things to happen before it
is in effect.
First, we must have an inheritance hierarchy using public
derivation.
Second, we must declare a public member function to be
virtual in either a direct or indirect base class.
Third, an overridden member function implemented in a
derived class must have exactly the same signature and
return type as the virtual function declaration.
Fourth, the overridden function must be accessed through a
direct or indirect base class pointer or reference.