天天看点

C++11 初始化

C++11 初始化

统一初始化语法

        C++11新添加初始化列表 std::initializer_list<>类型,可以通过{}语法来构造初始化列表 。初始化列表是常数;一旦被创建,其成员均不能被改变,成员中的数据也不能够被变动。函数能够使用初始化列表作为参数。

        在引入C++ 11之前,有各种不同的初始化语法。在C++ 11中,仍可以使用这些初始化语法,但也可以选择使用新引入的统一的初始化语法。统一的初始化语法用一对大括号{}表示。

        std::vector<string> v1 = {"hello", "world", "welcome"};

        std::vector<int> v2 = {0, 3, 8, 1, 4};

// 注: vs2012 不支持统一初始化方式{}

类内成员初始化

列表初始化

C++11引入了一个新的初始化方式,称为初始化列表(List Initialize),具体的初始化方式如下:

防止类型收窄

类型收窄指的是导致数据内容发生变化或者精度丢失的隐式类型转换。使用列表初始化可以防止类型收窄。