我有一个带有一些参数的构造函数。我以为它们是按照列出的顺序构造的,但是在一种情况下,看来它们是反向构造的,从而导致中止。当我反转参数时,程序停止中止。这是我使用的语法示例。事实是,在这种情况下,a_需要在b_之前初始化。能保证施工顺序吗?
例如
class A
{
public:
A(OtherClass o, string x, int y) :
a_(o), b_(a_, x, y) { }
OtherClass a_;
AnotherClass b_;
};
6
您说的是在询问构造函数参数,但是在到达构造函数之前先对它们进行了评估,并且它们以未指定的,由编译器确定的顺序进行评估。但是,您实际上是在询问初始化列表的顺序,所以我为您更改了问题标题。
—
罗伯·肯尼迪