C++ 11新特性之大括号初始化详解
发布时间:2020-12-24 12:25:24 所属栏目:经验 来源:网络整理
导读:本文主要给大家介绍了关于C++11新特性之大括号初始化的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: C++11之前,C++主要有以下几种初始化方式: //小括号初始化string str("hello");//等号初始化string str="hello";//大括号
本文主要给大家介绍了关于C++11新特性之大括号初始化的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 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大括号初始化还可以应用于容器,终于可以摆脱 // 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 新特性 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |