class A
{
private:
int a;
int b;
int c;
public:
A() : b(2), a(1), c (3)
{
}
};根据C++标准,数据成员是按照声明的顺序构造和初始化的,对吗?
但是当使用初始化列表时,我们改变了数据成员的顺序,现在是按照初始化列表的顺序还是声明的顺序进行初始化?
发布于 2012-08-26 06:42:39
在声明的顺序中,初始化列表中的顺序并不重要。有些编译器实际上会给你一个警告(gcc),告诉你初始化列表的顺序和声明的顺序不一样。这就是为什么当你使用成员初始化其他成员时,你也必须小心。
发布于 2012-08-26 06:43:02
不,初始化列表与此无关。
成员始终按照它们在类主体中出现的顺序进行初始化。
如果顺序不同,一些编译器甚至会警告你。
发布于 2012-08-26 06:43:30
它们按照声明的顺序进行初始化。此外,许多编译器警告您初始化列表与声明顺序不匹配,尽管标准允许这样做。
https://stackoverflow.com/questions/12126209
复制相似问题