c++20读笔-指派初始化器

前言

C++20引入了指派初始化器,以使用它们的名称初始化所有聚合的数据成员。聚合成员是满足以下限制的数组类型的对象或结构或类的对象:仅public数据成员、无用户声明或者继承的构造函数、无虚函数和无虚基类、private或protected的基类。指派初始化器以点开头,后跟数据成员的名称。指派初始化的顺序必须与数据成员声明的顺序相同。不允许混合使用指派初始化器和非指派初始化器。未使用指派初始化器初始化的任何数据成员都将使用其默认值进行初始化,这意味着:
1拥有类内初始化器的数据成员会得到该值。
2没有类内初始化器的数据成员会被零初始化。


代码如下(示例):

struct Employee 
{
	char firstInitial;
	char lastInitial;
	int employeeNumber;
	int salary { 75'000 };
}
Employee emp {
	.firstInitial = 'J',
	.lastInitial= 'D',
	.employeeNumber= 42,
	.salary = 80'000
};

如果对没写成员的默认值感到满意,则可以跳过对他们的初始化。

struct Employee 
{
	char firstInitial;
	char lastInitial;
	int employeeNumber;
	int salary { 75'000 };
}
Employee emp {
	.firstInitial = 'J',
	.lastInitial= 'D',
};
//emp.employeeNumber == 0 
//emp.salary == 75'000

相比于统一初始化器,使用指派初始化器更容易理解正在初始化的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值