C++11初始化列表

时间:2024-06-21 13:06:02

C++11之初始化列表

  在C++03中,在严格遵守POD的定义和限制条件的结构及类型上可以使用初始化列表(initializer list),构想是结构或是数组能够依据成员在该结构内定义的顺序通过给予的一串引数来产生。非POD的类型不能使用,就连相当有用的STL容器std::vector也不行。

  C++11将会把初始化列表的概念绑到类型上,称作std::initializer_list。这允许构造函数或其他函数像参数般地使用初始化列表。

  这个构造函数是种特殊的构造函数,称作初始化列表构造函数。有着这种构造函数的类型在统一初始化的时候会被特别对待。

  类型std::initializer_list<>是个第一级的C++11标准程序库类型。是一个普通的新STL结构可以被动态或表态地创造。初始化列表是常数;一旦被创建,其成员均不能被改变,成员中的数据也不能够被变动。

以下引用方式均正确:

  C++11初始化列表

  function也可以使用initializer_list,但感觉鸡肋:

  C++11初始化列表

  当同时有匹配的constructor和初始化列表函数时,如果使用{}则初始化列表优先:

  C++11初始化列表  

参考:

1、http://zh.wikipedia.org/wiki/C++0x

2、http://www.oschina.net/question/162855_84477