Constructors in Hierarchies
The arguments to the base class constructor can only
consist of values supplied as arguments to the derived class
constructor, constants, literals, global variables, or
expressions made up from such values.
We cannot use derived class data members as arguments to
a base class constructor nor can we invoke a member
function of the derived class and use its return value as one
of the actual arguments
because the derived class has not yet been
initialized.