C++中的聚合類定義與用法分析
本文實例講述了C++中的聚合類。分享給大家供大家參考,具體如下:
聚合類是一種沒有用戶定義的構造函數(shù),沒有私有(private)和保護(protected)非靜態(tài)數(shù)據(jù)成員,沒有基類,沒有虛函數(shù)。這樣的類可以由封閉的大括號用逗號分隔開初始化列表。下列的代碼在 C 和 C++ 具有相同的語法:
struct C
{
int a;
double b;
};
struct D
{
int a;
double b;
C c;
};
// initialize an object of type C with an initializer-list
C c = { 1, 2 };
// D has a sub-aggregate of type C. In such cases initializer-clauses can be nested
D d = { 10, 20, { 1, 2 } };
如果一個類里面包含了用戶自定義的構造函數(shù),而又用{ xx, xx, ...}來初始化它的對象,編譯器就會報錯
vc —— error C2552: "xx" 不能用初始值設定項列表初始化非聚合
gcc—— error: xx must be initialized by constructor, not by '{...}'
聚合定義為:
數(shù)組
沒有以下內容的類、結構和聯(lián)合:
構造函數(shù)
私有或受保護的成員
基類
虛函數(shù)
編譯器不允許在包含構造函數(shù)的聚合中使用數(shù)據(jù)類型。
希望本文所述對大家C++程序設計有所幫助。
相關文章
C++11中l(wèi)onglong超長整型和nullptr初始化空指針
本文介紹?C++11?標準中新添加的?long?long?超長整型和?nullptr?初始化空指針,在?C++11?標準下,相比?NULL?和?0,使用?nullptr?初始化空指針可以令我們編寫的程序更加健壯,本文結合示例代碼給大家詳細講解,需要的朋友跟隨小編一起看看吧2022-12-12

