10.7 CONSTRUCTORS FOR VIRTUAL BASE CLASSES
C++ Manual specifies the following rules.
Constructors for virtual base classes are invoked before any non-virtual base classes.
- If the hierarchy contains multiple virtual base classes, the virtual base class constructors are invoked in the order in which they were declared.
- Any non-virtual bases are then constructed before the derived class constructor is called.
- If a derived class has one virtual base class and other non-virtual base class, then the constructor of the virtual base class will be constructed first even though it appears at second position in the declaration. Then the non-virtual base class constructor is executed. (Normally, whichever is in the first position, is executed first.)