有那几种情况只能用初始化列表,而不能用赋值

无论是在构造函数初始化列表中初始化成员,还是在构造函数中赋值初始化,最终结果都是相同的。不同之处在于,使用构造函数初始化列表初始化数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。
对于const和reference类型成员变量,它只能够被初始化而不能够做赋值操作,因此只能用初始化列表。
类的构造函数调用其基类的构造函数时候,也只能用初始化列表。

在这里插入代码片
//const 类型成员变量初始化
class test {
	public:
	const int mydata;
	test():mydata(255){};
};
//reference类型成员变量
class test {
public:
	int &ref;
	test():ref(255){};
};
//构造函数调用基类
class A
{
private:
	int a;
public:
	A(){};
	A(int x):a(x){};
	void printa()
	{
		cout << "a = " << a << endl;
	}
};
class B::public A
{
private:
	int b;
public:
	B(int x, int y):A(x) 
	{
		b = y;
	}
	void printb()
	{
		cout << "b = " << b << endl;
	}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值