欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目: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)容運(yùn)算符 (iValue.) 訪問 ,如下所示:

int i = ptv.iValue;

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

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

declarator : constant-expression

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

// bit_fields1.cpp
// compile with: /LD
struct 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)存布局如下圖所示。

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

// bit_fields2.cpp
// compile with: /LD
struct 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)存布局如下圖中所示。

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

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有