Virtual Inheritance
Always supply default constructors with virtual base
classes. This will avoid problems when initializing
virtual base class members. If a virtual base class has
arguments, then we must expect the most derived class to
have full knowledge of the indirect base class
constructor.
Arguments specified for virtual base class constructors
must come from the derived class that is actually creating
an object.
Virtual base class constructor invocations from
intermediate base classes are ignored.