例子:
class X
{
int i;
int j;
public:
X(int val):j(val),i(j){};
};
执行结果:
i = 未知数据
j = val
原因:
在调用构造函数对成员变量i,j初始化时,不是按照初始化列表顺序去执行,而是按照成员变量定义顺序执行初始化
因此执行顺序为:
i = j;
j = val;
本文通过一个具体的C++类构造函数实例,详细解释了成员变量初始化的顺序问题,并揭示了为何实际执行顺序与预期可能不一致的原因。指出成员变量的初始化顺序取决于其声明顺序而非初始化列表中的顺序。
例子:
class X
{
int i;
int j;
public:
X(int val):j(val),i(j){};
};
执行结果:
i = 未知数据
j = val
原因:
在调用构造函数对成员变量i,j初始化时,不是按照初始化列表顺序去执行,而是按照成员变量定义顺序执行初始化
因此执行顺序为:
i = j;
j = val;
542

被折叠的 条评论
为什么被折叠?