列表初始化的语法{ arg1, arg2, ... }非常直观,合理使用能简化代码以及增强可读性。

列表初始化的常用语法

直接列表初始化

语法 语义
T object { arg1, arg2, ... }; 对象构造
T { arg1, arg2, ... }; 临时对象构造
new T { arg1, arg2, ... } new构造对象
Class { T member { arg1, arg2, ... }; }; 成员直接初始化
Class::Class() : member{arg1, arg2, ...} {... 构造函数初始化列表

拷贝列表初始化

语法 语义
T object = {arg1, arg2, ...}; 对象初始化
function( { arg1, arg2, ... } ); 函数参数
return { arg1, arg2, ... } ; 返回值
object[ { arg1, arg2, ... } ] ; operator[]中使用
object = { arg1, arg2, ... } ; 赋值
U( { arg1, arg2, ... } ) 整体做为构造函数的一个参数
Class { T member = { arg1, arg2, ... }; }; 成员赋值

std::initializer_list类型

定义在头文件 中,定义:

template< class T >
class initializer_list;

参考