2016 - 2024

感恩一路有你

函数重载返回类型可以不同吗 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()//继承类

函数重载返回类型可以不同吗 类组合构造函数的调用顺序 析构函数有什么用

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。