#2923. C++-编译-warning: 'X::yy' will be initialized after [-Wreorder]
C++-编译-warning: 'X::yy' will be initialized after [-Wreorder]
Background
Description
-
warning: 'X::yy' will be initialized after [-Wreorder]
#include <iostream>
class BB{
};
class A : BB { public: A(); int first; int second; };
A::A() : BB() ,second(0) ,first(1) {
}
using namespace std; int main(int argc, char *argv[]) { (void)argc,(void)argv; cout << "Hello World!" <<endl; return 0; }
warning: 'A::second' will be initialized after [-Wreorder] int second; ^
这种警告真的很容易碰到。一句话--“先声明,先定义”。
为什么会有这种警告呢?原因是这样的:
以first、second两个变量为例,first,second一次声明,如果定义second要用到first这个值,而first并没有定义,那second初始化的值就可能会有问题。比如
second = first + 1;
first = 2;
这样就会有问题,给予警是在提醒程序员,这里可能出现类似以上问题。
Format
Input
Output
Samples
Limitation
1s, 1024KiB for each test case.