Constructors in Hierarchies
When the base class has a default constructor, it is
automatically invoked when an object of the derived class
is defined. This happens whether or not the derived class
constructor is a default constructor or requires arguments.
Supplying a default constructor in our base classes allows
for the most straightforward class design. And, supplying
a default constructor in a derived class makes it easier to
use if classes are subsequently derived from it.