本文主要給大家介紹了關于C++11新特性之大括號初始化的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:
C++11之前,C++主要有以下幾種初始化方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//小括號初始化 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的不足。
1
2
3
4
5
6
7
8
9
|
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中可以直觀地初始化容器了:
1
2
3
|
// 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中,類的數據成員在申明時可以直接賦予一個默認值:
1
2
3
4
5
|
class C { private : int a=7; //C++11 only }; |
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
參考文獻
[1]C++ 11 新特性
原文鏈接:http://blog.csdn.net/k346k346/article/details/55194246