C++11新特性——大括号初始化
来源:互联网 发布:聚合数据接口使用 编辑:程序博客网 时间:2024/05/20 12:47
C++11之前,C++主要有以下几种初始化方式:
//小括号初始化string str("hello");//等号初始化string str="hello";//大括号初始化struct Studnet{ char* name; int age;};Studnet s={"dablelv",18}; //纯数据(Plain of Data,POD)类型对象Studnet sArr[]={{"dablelv",18},{"tommy",19}}; //POD数组
虽然C++03提供了多样的对象初始化方式, 但不能提供自定义类型对象的大括号初始化方式,也不能在使用new[]的时候初始化POD 数组。幸好,C++11扩充了大括号初始化功能,弥补了C++03的不足。
class Test{ int a; int b; public: C(int i, int j); }; Test t{0,0}; //C++11 only,相当于 Test t(0,0); Test* pT=new Test{1,2}; //C++11 only,相当于 Test* pT=new Test{1,2}; int* a = new int[3]{ 1, 2, 0 }; //C++11 only
此外,C++11大括号初始化还可以应用于容器,终于可以摆脱 push_back() 调用了,C++11中可以直观地初始化容器了:
// C++11 container initializer vector<string> vs={ "first", "second", "third"}; map<string,string> singers ={ {"Lady Gaga", "+1 (212) 555-7890"},{"Beyonce Knowles", "+1 (212) 555-0987"}};
因此,可以将C++11提供的大括号初始化作为统一的初始化方式,既降低了记忆难度,也提高的代码的统一度。
此外,C++11中,类的数据成员在申明时可以直接赋予一个默认值:
class C {private: int a=7; //C++11 only};
参考文献
[1]C++ 11 新特性
1 0
- C++11新特性——大括号初始化
- C++11新特性学习笔记—使用花括号就地初始化
- C+11 新特性
- C++11新特性之列表初始化
- 【微信小程序+ES6新特性应用】字符串模板:美元符号$+大括号{}变量的写法
- [C++]C++11新特性
- 【C++】 C++11新特性
- C++11新特性之新类型与初始化
- C++11新特性之新类型与初始化
- H5—新特性
- 用大括号初始化C++数据成员
- 对双大括号初始化的理解
- ORACLE 12C新特性——CDB与PDB
- ORACLE 12C新特性——CDB与PDB
- ORACLE 12C新特性——CDB与PDB
- ORACLE 12C新特性——CDB与PDB
- ORACLE 12C新特性——CDB与PDB
- ORACLE 12C新特性——CDB与PDB
- eclipse 与git 整合 Egit 用户指南
- jQuery 选择器 - 1
- springmvc中的数据校验
- linux部分指令演示
- oracle 每日一题-function.RETURN语句
- C++11新特性——大括号初始化
- 蓝桥杯 2014 5 重复模式
- 解析Linux下的stat命令
- 糟糕的畢業季
- Dynamics 365 支持使用Web Api 通过名称来检索元数据
- Linux最常用的20条命令
- 安装2502,2503错误拯救
- 1053. Path of Equal Weight (30)
- 需求获取的方法