• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C++ 11新特性之大括号初始化详解

c++ 搞代码 4年前 (2022-01-06) 30次浏览 已收录 0个评论

这篇文章主要介绍了C++ 11新特性之大括号初始化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

本文主要给大家介绍了关于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提供了多样的对象初始化方式, 但不能提供自定义类型对象的大括号初始化

来源gaodai.ma#com搞##代!^码网

方式,也不能在使用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 vs={ "first", "second", "third"}; map 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 新特性

以上就是C++ 11新特性之大括号初始化详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C++ 11新特性之大括号初始化详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址