C++20 designated initializers
说明
C++20 引入了 designated initializers
来使用它们的名字来初始化聚合的数据成员。聚合类型可以是数组类型的对象,或者满足以下限制的结构体或类对象:
- 只有
public
数据成员 - 没有用户声明或继承的构造函数
- 没有虚函数
- 没有
virtual
,private
或protected
基类
例如,对于一个定义如下的员工结构体
struct Employee |
在定义一个结构体对象时,可以使用 uniform initialization
进行初始化,例如:
Employee anEmployee { 'J', 'D', 42, 80'000 }; |
也可以使用 designated initializers
进行初始化,例如:
Employee anEmployee |
在使用 designated initializers
进行初始化时,也可以初始化部分成员,这样,未被指定初始化的成员则进行 zero initialized
。例如:
Employee anEmployee |
此时,emplyeeNumber
将被设置为 0
.
designated initializers
的优点在于:
- 更容易理解指定的初始化器正在初始化什么
- when members are added to the data structure, existing code using designated initializers keeps working. The new data members will just be initialized with their default values.
实例
|
程序输出:
name: Tom, id: 123456, class: 3, age: 20 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Busyboxs!