Member Hiding
Members are hidden anytime we specify a data member
or a member function in a derived class that has the same
name as a member in a base class.
A member function in a derived classes hides a member
function in a base class even if the signatures are
different.
When that member is accessed, either from a client of the
derived class or within the derived class itself, it is the
derived member that is used.
If the argument list used by the client does not match any
of the functions defined within the derived class, a
compile error will occur even if a base class has a
matching function.