C++中的聚合類定義與用法分析
本文實例講述了C++中的聚合類。分享給大家供大家參考,具體如下:
聚合類是一種沒有用戶定義的構(gòu)造函數(shù),沒有私有(private)和保護(hù)(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 } };
如果一個類里面包含了用戶自定義的構(gòu)造函數(shù),而又用{ xx, xx, ...}來初始化它的對象,編譯器就會報錯
vc —— error C2552: "xx" 不能用初始值設(shè)定項列表初始化非聚合
gcc—— error: xx must be initialized by constructor, not by '{...}'
聚合定義為:
數(shù)組
沒有以下內(nèi)容的類、結(jié)構(gòu)和聯(lián)合:
構(gòu)造函數(shù)
私有或受保護(hù)的成員
基類
虛函數(shù)
編譯器不允許在包含構(gòu)造函數(shù)的聚合中使用數(shù)據(jù)類型。
希望本文所述對大家C++程序設(shè)計有所幫助。
相關(guān)文章
深入分析C++中兩個大數(shù)相乘結(jié)果不正確的問題
本篇文章是對C++中兩個大數(shù)相乘結(jié)果不正確的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++11中l(wèi)onglong超長整型和nullptr初始化空指針
本文介紹?C++11?標(biāo)準(zhǔn)中新添加的?long?long?超長整型和?nullptr?初始化空指針,在?C++11?標(biāo)準(zhǔn)下,相比?NULL?和?0,使用?nullptr?初始化空指針可以令我們編寫的程序更加健壯,本文結(jié)合示例代碼給大家詳細(xì)講解,需要的朋友跟隨小編一起看看吧2022-12-12

