1. 程式人生 > >C++11新特性學習筆記—使用花括號就地初始化

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的操作即可,因為有就地初始化操作的存在,所以不用擔心成員變數未被初始化。很棒!