Constructor order in virtual inheritance
<p>I am a freshman in C++, especially about object-oriented programming. And now I have a problem during my learning.</p>

<p>There is a class hierarchy following:</p>

<pre><code>class Class{};

class Base:public Class{};

class Derived1:virtual public Base{};

class Derived2:virtual public Base{};

class MI:public Derived1,public Derived2{};

class Final:public MI,public Class{};
</code></pre>

<p>And now I want to know what the order of constructor for the definition of a Final class object is.</p>

<p>I draw a diagram:
<img src="http://i.stack.imgur.com/EzFMR.jpg" alt="enter image description here">
<img src="http://hi.csdn.net/attachment/201203/16/2712336_1331902452BziD.jpg" alt="structure of class inheritance"></p>

<p>I know Virtual base classes are always constructed prior to nonvirtual base classes regardless of where they appear in the inheritance hierarchy. What I am confused is that if constructor of class Class is before Base, and if constructor of Class is invoked twice. And why?</p>

<p>Can someone tell my the answer? The more detailed, the better.</p>
