本文主要給大家介紹了關于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大括號初始化還可以應用于容器,終于可以擺脫 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 新特性
新聞熱點
疑難解答
圖片精選