本文共 614 字,大约阅读时间需要 2 分钟。
C++中,类成员的初始化顺序与它们的声明顺序必须一致。
反面例子:
#includeclass Test{private: int y; int x;public: Test() : x(10), y(x + 10) { } void print();};void Test::print(){ std::cout << "x = " << x << " y = " << y;}int main(){ Test t; t.print(); return 0;}
运行输出结果:
x = 10 y = 1990696510上述程序可以打印正常的x值,但是y值是不确定的。因为y值会在x之前进行初始化,而这时候x尚未初始化,是一个随机值,导致y也是随机值。
正常例子:
//解决方法1:调整声明的顺序class Test { private: int x; int y; public: Test() : x(10), y(x + 10) {} void print();};//解决方法2:调整初始化顺序class Test { private: int y; int x; public: Test() : x(y-10), y(20) {} void print();};
转载地址:http://tqeji.baihongyu.com/