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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值