构造函数的这些部分的命令是什么顺序?
myClass::myClass(otherClass c) // part 1
: baseClass(thing) // part 2
{ // part 3
thing = c;
}
是1,3,2?
答案 0 :(得分:1)
1,2,3。
评估第一个参数。然后初始化。然后是函数体。
参数顺序未指定。
ctor init list的顺序是班级成员的顺序。
答案 1 :(得分:1)
第1部分未导致任何评估;它描述了如何调用 函数,并命名参数(当然必须对其进行求值 调用函数。
初始化发生在之前输入构造函数体。第一 所有虚拟基类都按照a的结果初始化 深度先从左到右搜索继承层次结构,然后全部 非虚拟基类按从左到右的顺序进行初始化 它们出现在类定义中,最后是成员 按照在类定义中声明的顺序初始化。 请注意初始值设定项在构造函数中的显示顺序 对订单没有影响。
最后,执行构造函数体(第3部分)。