C++11新特性學習筆記—使用花括號就地初始化

這個特性是真正極好的!非常好用且方便!降低工作量!

     如果一個類有很多成員變量A,B,C,D...,而且有很多不同版本的構造函數c1,c2,c3....,每個不同的構造函數可能會選擇不同的成員來初始化,如果不在構造函數中將所有的成員變量都初始化一遍的話,那麼有些成員就沒有初始化,而沒有初始化的東西是非常可怕的!因此一定要保證都被初始化了,但是如果在不同的構造函數中將所有成員變量都初始化,重複的代碼必然變多。如何解決上面矛盾呢??這就要使用C++11提供的花括號來就地初始化了,這個真是極好的!注意:初始化成員列表是發生在就地初始化之前的。

    EX:

//使用花括號進行就地初始化,很方便阿!
#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" };
};
        就像上面這個例子,只需要在special的構造函數中執行其special的操作即可,因爲有就地初始化操作的存在,所以不用擔心成員變量未被初始化。很棒!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章