类成员变量初始化时的小错误

  在类中,成员变量初始化的顺序是由它们声明的先后顺序执行的---偶尔会忘记。  

栗子:

  

#include<iostream>
using namespace std;

class base
{
private:
int m;
int n;
public:
base(int i) :n(i), m(n){}     //初始化列表的顺序出错
base() :n(0), m(n){}         //初始化列表的顺序出错
int get_m()
{
return m;
}
int get_n()
{
return n;
}
};

int main(void)
{
base obj(98);
cout << obj.get_n() << endl;
cout << obj.get_m() << endl;

system("pause");
return 0;
}

打印结果:

m被赋予一个随机值

 

改正初始化列表顺序:

#include<iostream>
using namespace std;

class base
{
private:
int m;
int n;
public:
base(int i) :m(i), n(m){}     //改正初始化列表顺序
base() :m(i), n(m){}         //改正初始化列表顺序
int get_m()
{
return m;
}
int get_n()
{
return n;
}
};

int main(void)
{
base obj(98);
cout << obj.get_n() << endl;
cout << obj.get_m() << endl;

system("pause");
return 0;
}

打印结果:

posted on 2016-08-15 00:30  A-祥子  阅读(267)  评论(0)    收藏  举报

导航