C++11新特性學習筆記—使用花括號就地初始化
阿新 • • 發佈:2018-12-26
這個特性是真正極好的!非常好用且方便!降低工作量!
如果一個類有很多成員變數A,B,C,D...,而且有很多不同版本的建構函式c1,c2,c3....,每個不同的建構函式可能會選擇不同的成員來初始化,如果不在建構函式中將所有的成員變數都初始化一遍的話,那麼有些成員就沒有初始化,而沒有初始化的東西是非常可怕的!因此一定要保證都被初始化了,但是如果在不同的建構函式中將所有成員變數都初始化,重複的程式碼必然變多。如何解決上面矛盾呢??這就要使用C++11提供的花括號來就地初始化了,這個真是極好的!注意:初始化成員列表是發生在就地初始化之前的。
EX:
就像上面這個例子,只需要在special的建構函式中執行其special的操作即可,因為有就地初始化操作的存在,所以不用擔心成員變數未被初始化。很棒!//使用花括號進行就地初始化,很方便阿! #include<string> using namespace std; class Mem { public: Mem(int i) :m(i) {} private: int m; }; class Group { public : Group(); Group(int a) :data(a) {} Group(Mem m) :mem(m) {} Group(int a, Mem m, string n) :data(a), mem(m), name(n) {} private: int data{ 1 }; Mem mem{ 0 }; string name{ "group" }; };