c++11大括号初始化
C++11可以将{}初始化器用于任何类型(可以用等号,也可以不用)
数组、集合初始化
在C++11中,集合(列表)的初始化已经成为C++的一个基本功能,被称为“初始化列表”:
// C++98支持,C++11支持 int a[] = {1, 2, 3}; // C++98不支持,C++11支持 int b[]{2, 3, 4}; // C++98不支持,C++11支持 vector<int> c{1, 2, 3}; // C++98不支持,C++11支持 map<int, float> d = {{1, 1.0f}, {2, 2.0f}, {3, 3.0f}};
在C++11中,自动变量和全局变量的初始化方式包括:
// 1.等号加上赋值表达式 int t1 = 1 + 2; // 2.等号加上大括号表达式的初始化列表 int t2 = {1 + 2}; // 3.大括号式的初始化列表 int t3{1 + 2}; int *t4 = new int{10}; // 4.小括号式的表达式列表 int t6(3 + 4); int *t7 = new int(10);
类成员初始化
C++98中如果静态成员不满足常量性,不能就地声明,且而且即使常量的静态成员也只能是整型或枚举型才能就地初始化。
C++11中,除了初始化列表(在构造函数中初始化)外,允许使用等=或花括号{}进行就地的非静态成员变量初始化:
struct Node { int value = 1; };
如果在一个类中,既使用了就地初始化来初始化非静态成员变量,又在构造函数中使用了初始化列表,执行顺序是:先执行就地初始化,然后执行初始化列表。
自定义类型初始化
标准模板库STL中容器对初始化列表的支持源于<initializer_list>头文件中initialize_list类模板的支持。程序员只要#include<initializer_list>并声明一个以initialize_List
本文作者:n1ce2cv
本文链接:https://www.cnblogs.com/sprinining/p/18368634
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步