struct A {
int x;
int y;
A() : y(2), x(3) { }
};
foo.cc: In constructor `A::A()':
foo.cc:3: warning: `A::y' will be initialized after
foo.cc:2: warning: `int A::x'
int x;
int y;
A() : y(2), x(3) { }
};
foo.cc: In constructor `A::A()':
foo.cc:3: warning: `A::y' will be initialized after
foo.cc:2: warning: `int A::x'
Google了一下,应该是构造函数里面成员的初始化顺序和声明的不一致引起的,没有深究下去了,本来构造和析构就是一个灰色地带,如果里面依赖关系很复杂,真是没办法说清楚的,所以,还是KISS算了。