Inheritance Hierarchies
Every hierarchy has a root (e.g., base class) which has
zero or more children.
Each child (e.g., derived class) is either a leaf or branches
into children of its own.
Each class is inherently related to its parent, as well as to
its ancestors.
In C++, the root of each hierarchy or sub-hierarchy is
called a base class.
If the base class is the parent of the class in question, then
it is a direct base class. Otherwise, if it is an ancestor, then
it is an indirect base class.