nVirtual functions cannot be static member functions.
nSecond, the signature and return type must be the same for all implementations of the virtual function.
n Third, while the function must be defined as
a virtual function within a
direct or indirect base class, it need not be defined in those derived classes where the inherited behavior does not need to differ.
nAnd finally, the keyword virtual is only required within the base class itself; derived class implementations of the overridden function do not need to repeat the use of that keyword.
nOnce a member function is declared to be virtual, it remains virtual for all derived classes.