C++类和对象(6)——初始化列表
一般的初始化
class A
{
public:A(int a){
//一般的初始化,在{}括号里面给成员变量赋值_a = a;cout << _a << endl;}~A() {}private:int _a;
};
用 初始化列表 初始化
当成员变量是以下两种情况时,
必须使用初始化列表!
const int _b;
int& _c;
当然,我们可以在声明时就写 const int _b = 3,这样也可以初始化。。
但还是推荐下面这种,格式为 类名 + (形参)+ ‘ :’ + 变量名(形参) + {}
class A
{
public:A(int a, int b, int& c):_a(a),_b(b),_c(c){cout << _a << " " << _b << " " << _c << endl;}~A(){}private:int _a;const int _b;int& _c;
};
注意事项
初始化的顺序是按成员变量的声明的顺序,而不是按在初始化列表里的顺序。
举个例子:
声明的顺序是:_a, _b;
初始化的顺序是:_a(a), _b(a).
再举个栗子:
声明的顺序是:_b,_a;
初始化的顺序是:_b(a),_a(a).
此时a未初始化,是一个随机值,赋给了_b,导致 _b 是随机值;
随后_a正常初始化为1。