一般的初始化
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。