我們知道c++11新增了初始化列表,在之前的部落格中也有過介紹。
**c++中的初始化列表(區別賦值和初始化)
c++11特性之initializer_list
今天就討論這麼用初始化列表,不喜勿噴。
先寫乙個類:
class ******type
; // << wow!
int b ; // << wow2!
string name ; // wow3!
public:
******type() "
<< endl;
}~******type()
};
使用這個類:
******type obj;
輸出:
******type::ctor,
來說說什麼這麼寫有用:
1簡潔
2你不會忘記初始成員變數
3當你有好幾個建構函式的時候,這麼寫更有好處
對上面的類就行簡單的修改:
class ******type
; // << wow!
int b ; // << wow2!
string name ; // wow3!
public:
******type()
******type(int aa, int bb)
: a(aa), b(bb) // << custom init!
"<< std::endl;
}~******type()
};
對修改後的類進行使用:
class advancedtype
advancedtype(int a) : ******(a, a)
~advancedtype()
};
使用:
advancedtype adv;
輸出:
******type::ctor,
advancedtype::ctor
使用:
advancedtype advobj2(10);
輸出:
******type::ctor(aa, bb),
advancedtype::ctor(a)
***:
想要乙個空的成員變數的時候,比如vector等等。
C 11之列表初始化
c 98使用 對陣列初始化 int arr int arr 4 但對於自定義型別會報錯 vectorv 內建型別 int x1 int x2 int x3 1 2 int x4 int x5 陣列 int arr1 5 int arr2 動態陣列 c 98不支援 int arr3 new int 5...
C 11 就地初始化與列表初始化
在 c 11 之前,只能對結構體或類的靜態常量成員進行就地初始化,其他的不行。class c class c or int b c 11 only int c 7 error 注意,小括號初始化方式不能用於就地初始化。c 11 支援了就地初始化非靜態資料成員的同時,初始化列表的方式也被保留下來,也就...
c 11 就地初始化與列表初始化
還可以看看 在c 11之前,只能對結構體或類的靜態常量成員進行就地初始化,其他的不行。class c class c 或int b c 11 only int c 7 error 1.2就地初始化與初始化列表的先後順序 c 11標準支援了就地初始化非靜態資料成員的同時,初始化列表的方式也被保留下來,...