类成员变量初始化时的小错误
在类中,成员变量初始化的顺序是由它们声明的先后顺序执行的---偶尔会忘记。
栗子:
#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;
}
打印结果:
浙公网安备 33010602011771号