国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

詳細解讀C++編程中的匿名類類型和位域

2020-05-23 14:09:24
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C++編程中的匿名類類型和位域,是C++入門學習中的基礎知識,需要的朋友可以參考下
 

匿名類類型
類可以是匿名的 - 也就是說,可以在沒有 identifier 的情況下聲明類。在將類名稱替換為 typedef 名稱時,這會很有用,如下所示:

typedef struct{  unsigned x;  unsigned y;} POINT;

注意
上面示例中顯示的匿名類的用法對于保留與現(xiàn)有 C 代碼的兼容性很有用。在某些 C 代碼中,將 typedef 與匿名結(jié)構(gòu)結(jié)合使用是很普遍的。
如果您希望對類成員的引用就像它未包含在獨立類中的情況一樣出現(xiàn),則匿名類也很有用,如下所示:

struct PTValue{  POINT ptLoc;  union  {    int iValue;    long lValue;  };};PTValue ptv;

在上面的代碼中,可以使用對象成員選定內(nèi)容運算符 (iValue.) 訪問 ,如下所示:

int i = ptv.iValue;

匿名類受某些限制的約束。(有關匿名聯(lián)合的詳細信息,請參閱聯(lián)合。) 匿名類:
不能具有構(gòu)造函數(shù)或析構(gòu)函數(shù)。
不能作為函數(shù)的參數(shù)傳遞(除非使用省略號使類型檢查無效)。
無法作為函數(shù)中的返回值返回。

C++ 位域
類和結(jié)構(gòu)可包含比整型類型占用更少存儲空間的成員。這些成員被指定為位域。位域成員聲明符規(guī)范的語法如下:
語法

declarator : constant-expression

備注
(可選)declarator 是在程序中訪問成員的名稱。它必須是整型類型(包括枚舉類型)。 常數(shù)表達式指定結(jié)構(gòu)中成員所占據(jù)的位數(shù)。匿名位域 — 即不帶標識符的位域成員,可用于填充。
注意
寬度為 0 的未命名位域強制將下一個位域與下一個 type 邊界對齊,其中 type 是成員的類型。
下面的示例聲明包含位域的結(jié)構(gòu):

// bit_fields1.cpp// compile with: /LDstruct Date {  unsigned short nWeekDay : 3;  // 0..7  (3 bits)  unsigned short nMonthDay : 6;  // 0..31 (6 bits)  unsigned short nMonth  : 5;  // 0..12 (5 bits)  unsigned short nYear   : 8;  // 0..100 (8 bits)};

Date 類型的對象的概念上的內(nèi)存布局如下圖所示。

詳細解讀C++編程中的匿名類類型和位域

數(shù)據(jù)對象的內(nèi)容布局
請注意,nYear 的長度為 8 位,并且會溢出聲明類型 unsigned short 的字邊界。因此,它始于新 unsigned short 的開頭。并不必使所有位域均適合基礎類型的對象;根據(jù)聲明中請求的位數(shù)來分配新的存儲單元。
如果結(jié)構(gòu)的聲明包含長度為 0 的未命名字段(如以下示例所示),

// bit_fields2.cpp// compile with: /LDstruct Date {  unsigned nWeekDay : 3;  // 0..7  (3 bits)  unsigned nMonthDay : 6;  // 0..31 (6 bits)  unsigned      : 0;  // Force alignment to next boundary.  unsigned nMonth  : 5;  // 0..12 (5 bits)  unsigned nYear   : 8;  // 0..100 (8 bits)};

則內(nèi)存布局如下圖中所示。

詳細解讀C++編程中的匿名類類型和位域

帶有零長度位域的數(shù)據(jù)對象的布局
位域的基礎類型必須是整型類型。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 买车| 新乡市| 泽库县| 奎屯市| 安平县| 肥城市| 莎车县| 肃宁县| 铜川市| 砚山县| 夏邑县| 临汾市| 东源县| 义马市| 梧州市| 晴隆县| 门头沟区| 叙永县| 招远市| 田林县| 余姚市| 新巴尔虎左旗| 光山县| 顺平县| 哈尔滨市| 洛南县| 乐昌市| 鸡东县| 柘城县| 贵港市| 泸定县| 积石山| 田阳县| 淳化县| 罗平县| 育儿| 威信县| 嘉鱼县| 海兴县| 黄浦区| 张家界市|