#include <cstdio>
using namespace std;
struct A{
int x,y;
A():y(-1),x(1){}
};
A a;
int main(){
printf("%d %d\n",a.x,a.y);
return 0;
}
这么一个东西输出期望的 1 -1
,但它有警告:
/tmp/compiler_obd2u9fn/src: 在构造函数‘A::A()’中:
/tmp/compiler_obd2u9fn/src:4:11: 警告:‘A::y’ will be initialized after [-Wreorder]
4 | int x,y;
| ^
/tmp/compiler_obd2u9fn/src:4:9: 警告: ‘int A::x’ [-Wreorder]
4 | int x,y;
| ^
/tmp/compiler_obd2u9fn/src:5:5: 警告:在此处初始化后被初始化 [-Wreorder]
5 | A():y(-1),x(1){}
| ^
试了一下,交换 x,y
的位置就没有警告了,那么这个警告是什么意思?忽略它会有什么潜在风险?