根据C++对于虚基类的构造函数怎么調用“最晚辈派生”调用规则所有的虚基类的构造函数怎么调用都要由 a 的构造函数怎么调用最先调用,系统中有两个虚基类:c 和 e但由於 e 是 c 的基类,所以 e 的构造函数怎么调用要先调用(这是第1)c 还有一个基类是 d,也要调用构造函数怎么调用(这是第2)然后才是调用 c 的構造函数怎么调用(这是第3)。
c 初始化完后再初始化 b,而 b 两个基类 d 和 ee 是虚基类,已经初始化过了然后是基类 d,要先调用其构造函数怎么调用 (这是第4)然后是 b 自己的构造函数怎么调用调用(这是第5)。
c 和 b 都初始化完成了最后调用 a 的构造函数怎么调用(这是第6)。
囷@SMNde意见不一致的地方在于E只需要构造一次
这个代码可以清晰的显示构造函数怎么调用的调用顺序和分别被谁调用
从下往上 运行 a 的构造函数怎么调用 必须先 运行 其父类的构造函数怎么调用
所以要运行 b c的构造函数怎么调用 虚基类的父类构造函数怎么调用先运行
先 运行c 的 构造函数怎么调用 必须运行 其父类的构造函数怎么调用 e d
e 是 虚基类的父类构造函数怎么调用先运行
但是 虚基类的构造函数怎么调用 只调用一次
也就是說 分为 b c 两部分看就好 比较清晰