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

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

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

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

匿名類(lèi)類(lèi)型
類(lèi)可以是匿名的 - 也就是說(shuō),可以在沒(méi)有 identifier 的情況下聲明類(lèi)。在將類(lèi)名稱(chēng)替換為 typedef 名稱(chēng)時(shí),這會(huì)很有用,如下所示:

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

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

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

PTValue ptv;

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

int i = ptv.iValue;

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

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

declarator : constant-expression

備注
(可選)declarator 是在程序中訪問(wèn)成員的名稱(chēng)。它必須是整型類(lèi)型(包括枚舉類(lèi)型)。 常數(shù)表達(dá)式指定結(jié)構(gòu)中成員所占據(jù)的位數(shù)。匿名位域 — 即不帶標(biāo)識(shí)符的位域成員,可用于填充。
注意
寬度為 0 的未命名位域強(qiáng)制將下一個(gè)位域與下一個(gè) type 邊界對(duì)齊,其中 type 是成員的類(lèi)型。
下面的示例聲明包含位域的結(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 類(lèi)型的對(duì)象的概念上的內(nèi)存布局如下圖所示。

數(shù)據(jù)對(duì)象的內(nèi)容布局
請(qǐng)注意,nYear 的長(zhǎng)度為 8 位,并且會(huì)溢出聲明類(lèi)型 unsigned short 的字邊界。因此,它始于新 unsigned short 的開(kāi)頭。并不必使所有位域均適合基礎(chǔ)類(lèi)型的對(duì)象;根據(jù)聲明中請(qǐng)求的位數(shù)來(lái)分配新的存儲(chǔ)單元。
如果結(jié)構(gòu)的聲明包含長(zhǎng)度為 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)存布局如下圖中所示。

帶有零長(zhǎng)度位域的數(shù)據(jù)對(duì)象的布局
位域的基礎(chǔ)類(lèi)型必須是整型類(lèi)型。

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

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

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

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