在下面的代码中,当 ctor 为X
被称为意志的演员A
or B
被先叫?它们在类主体中的放置顺序是否控制这一点?如果有人可以提供一段来自 C++ 标准的文本片段来讨论这个问题,那就完美了。
class A {};
class B {};
class X
{
A a;
B b;
};
顺序是它们在类定义中出现的顺序 - 这来自 C++ 标准的第 12.6.2 节:
5 初始化应在
以下顺序:
— 首先,且仅用于
最派生的构造函数
如下所述的类,虚拟基
类应在初始化
它们出现的顺序是深度优先的
从左到右遍历
基数的有向无环图
类,其中“从左到右”是
基类的出现顺序
派生类中的名称
基本说明符列表。
——然后,直接
基类应在中初始化
声明顺序如出现在
基本说明符列表(无论
内存初始化器的顺序)。
— 那么,非静态数据成员应为
按照它们的顺序初始化
在类定义中声明
(同样无论顺序如何
内存初始化器)。
——最后是本体
构造函数的执行。 [笔记:
申报令的授权是
确保基类和成员子对象
以相反的顺序被销毁
初始化。 ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)