Multiple Inheritance
Members in a base class 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 one of the base
classes. When that member is accessed, either from a
client of the derived class or within the derived class
itself, it is the derived class member that is used.
To avoid problems with ambiguous resolutions, if there
are members with the same name in the base classes,
then we should make a rule to hide those members with
a member of the same name in our derived class. This is
a simple rule to follow and will avoid problems of
ambiguity for clients of our classes.