C++中的聚合類定義與用法分析
本文實(shí)例講述了C++中的聚合類。分享給大家供大家參考,具體如下:
聚合類是一種沒有用戶定義的構(gòu)造函數(shù),沒有私有(private)和保護(hù)(protected)非靜態(tài)數(shù)據(jù)成員,沒有基類,沒有虛函數(shù)。這樣的類可以由封閉的大括號(hào)用逗號(hào)分隔開初始化列表。下列的代碼在 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è)類里面包含了用戶自定義的構(gòu)造函數(shù),而又用{ xx, xx, ...}來初始化它的對象,編譯器就會(huì)報(bào)錯(cuò)
vc —— error C2552: "xx" 不能用初始值設(shè)定項(xiàng)列表初始化非聚合
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è)計(jì)有所幫助。
- C++11新特性之自定義字面量
- Visual Studio Code運(yùn)行C++代碼時(shí)顯示CLOCKS_PER_SEC未定義的問題及解決方法
- C++自定義API函數(shù)實(shí)現(xiàn)大數(shù)相乘算法
- C++ Primer中&、*符號(hào)的多重定義與int *p和int* p的區(qū)別講解
- 在編程語言中怎樣定義隊(duì)列及其使用(C++)
- c/c++中struct定義、聲明、對齊方式解析
- C/C++語言中全局變量重復(fù)定義問題的解決方法
- 舉例說明自定義C++異常處理的實(shí)例
- C++ 自定義棧實(shí)現(xiàn)迷宮求解
- 區(qū)分c++中的聲明與定義
相關(guān)文章
C語言二叉樹的三種遍歷方式的實(shí)現(xiàn)及原理
這篇文章主要介紹了C語言二叉樹的三種遍歷方式的實(shí)現(xiàn)及原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
深入分析C++中兩個(gè)大數(shù)相乘結(jié)果不正確的問題
本篇文章是對C++中兩個(gè)大數(shù)相乘結(jié)果不正確的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語言實(shí)現(xiàn)去除字符串中空格的簡單實(shí)例
下面小編就為大家?guī)硪黄狢語言實(shí)現(xiàn)去除字符串中空格的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-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
C++動(dòng)態(tài)內(nèi)存分配超詳細(xì)講解
給數(shù)組分配多大的空間?你是否和初學(xué)C時(shí)的我一樣,有過這樣的疑問。這一期就來聊一聊動(dòng)態(tài)內(nèi)存的分配,讀完這篇文章,你可能對內(nèi)存的分配有一個(gè)更好的理解2022-08-08

