C++11開始,可以用 { } 來初始化類的對象。
auto uri = mongocxx::uri{ "mongodb://host1/?minPoolSize=3&maxPoolSize=5" };
//小括號初始化 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++11擴充了大括號初始化功能
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 };