C++多重继承构造函数调用顺序

//以典型实例说明
1
class B1{}; 2 class V1:public B1(); 3 class D1:virtual public V1(); 4 class B2{}; 5 class B3{}; 6 class V2:public B1,publicB2{}; 7 class D2:virtual public V2,public B3{}; 8 class M1{}; 9 class M2{}; 10 class X:public D1,public D2 11 { 12 M1 m1_; 13 M2 m2_; 14 };

构造函数调用顺序:

 

1.首先,构造虚基类子对象;

 构造V1:      B1::B1() V1::V1()

 构造V2:     B1::B1()  B2::B2() V2::V2()

2.其次,构造非虚基类子对象;

构造D1:    D1::D1()

构造D2:    B3::B3()  D2::D2()

3.再次,构造所有成员 M1::M1() M2::M2()

4.最后,构造X本身X::X()

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。