我是C++的新生,特别是关于面向对象的编程.现在我在学习期间遇到了问题.
下面是一个类层次结构:
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{};
Run Code Online (Sandbox Code Playgroud)
现在我想知道Final类对象定义的构造函数的顺序是什么.
我画了一个图:
类继承的结构http://hi.csdn.net/attachment/201203/16/2712336_1331902452BziD.jpg
我知道虚拟基类总是在非虚基类之前构建,而不管它们在继承层次结构中出现的位置.我感到困惑的是,如果Class类的构造函数在Base之前,并且如果Class的构造函数被调用两次.为什么?
有人可以告诉我答案吗?越详细越好.
直接继承Classby Final和Base不是virtual,所以一个实例Final有两个类型的基类子对象Class.作为直接基础的那个Base之前是构造的Base,并且Final之后构建了直接基础的那个(实际上在之后MI).
原因是:
应用(1)Final告诉我们Class之后构造的MI.多次应用(2)告诉我们Class在之前Base,之前Derived1和Derived2之前构造MI.
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |