C++构造与析构(7) - 数据成员的初始化

来源:互联网 发布:西科大网络教育怎么样 编辑:程序博客网 时间:2024/06/05 06:01
C++中, 类成员的初始化顺序与它们的声明顺序一致。

参考下面例子:

#include<iostream>class 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之前进行初始化。

所以下面的程序可以避免这种情况:

// 解决方法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();};
0 0
原创粉丝点击