C+:类数据成员的初始化顺序在下面的代码中,当X名为Will the ctor ofA或B先打电话?它们放在类主体中的顺序是否控制了这一点?如果有人能从C+标准中提供一段文字来讨论这个问题,那就太完美了。class A {};class B {};class X{
A a;
B b;};
2 回答
LEATH
TA贡献1936条经验 获得超6个赞
5.初始化应按以下顺序进行:
-首先,并且仅对于下面描述的最派生类的构造函数,虚拟基类应按照它们在基类的有向无圈图的深度(首先左向右遍历)上出现的顺序进行初始化,其中“左到右”是派生类基类说明符-列表中基类名称的出现顺序。
-然后,直接基类将按声明顺序初始化,就像它们出现在基类说明符列表中一样(不管mem初始化器的顺序如何)。
-然后,非静态数据成员应按照类定义中声明的顺序进行初始化(同样,无论mem-initializer的顺序如何)。
-最后,执行构造函数的主体。[注:声明命令的任务是确保以初始化的相反顺序销毁基和子对象。]
繁花不似锦
TA贡献1851条经验 获得超4个赞
a
b
.
- 2 回答
- 0 关注
- 553 浏览
添加回答
举报
0/150
提交
取消