函数重载返回类型可以不同吗 C 多重继承构造函数的调用次序问题?
浏览量:1286
时间:2021-03-14 17:53:07
作者:admin
C 多重继承构造函数的调用次序问题?
根据C对虚基类构造函数的调用规则,所有虚基类的构造函数都应该首先被A的构造函数调用,系统中有两个虚基类:C和E,但是由于E是C的基类,所以应该首先调用E的构造函数(这是第一个),还有另一个C的基类是C d。也可以调用构造函数(这是数字2),然后调用C的构造函数(这是数字3)。
C初始化后,B初始化,B有两个基类D和E。E是已初始化的虚拟基类,然后是基类D,应首先调用其构造函数(这是第四个),然后调用B自己的构造函数(这是第五个)。c和B都被初始化,最后调用a的构造函数(这是第六个)。
所以整个顺序是e、D、C、D、B、a。在任何非虚拟基类构造函数之前调用虚拟基类的构造函数。如果构造中包含多个虚拟基类,则它们的调用顺序为声明顺序。如果虚拟类是从非虚拟类派生的,则首先调用非虚拟类的构造函数。
下面是一个示例:
class X:public y,virtual public Z
X one
调用顺序如下:
Z()//虚拟基类初始化
y()//非虚拟基类
X()//继承类
函数重载返回类型可以不同吗 类组合构造函数的调用顺序 析构函数有什么用
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
上一篇
条目化形式 条目式格式范本