C 空類的大小

2022-07-26 14:27:16 字數 671 閱讀 7818

先介紹乙個問題,乙個空類的大小是多少?

我們不妨測試一下:

1 #include 2

using

namespace

std;34

class

vpoet5;

89intmain()

10

執行結果:

以我們的想法,既然這個類沒有任何成員變數和成員函式

那麼肯定是類的大小為0。其實我們可以考慮一下關於內建

型別,比

如int型別 當我們定義乙個int a[5],我們設&a[0]=mem;

那麼&a[1]是不是就等於&a[1]=mem+sizeof(int)呢,這

樣陣列中

每個元素都在一段連續的不同的記憶體上。那麼同樣的道理,當我們

定義乙個空類型別的陣列 vpoet b[5],這

時候&b[1]=&b[0]+sizeof(vpoet)

如果按照我們的想法如果乙個空類的大小為0,那麼豈不是b[1]與b[0]的記憶體

產生了重疊,這樣定義該類型別的陣列顯然就

失去了意義,另一方面c++中要求

對於類的每個例項都必須有獨一無二的位址,那麼

編譯器自動為空類分配乙個

位元組大小,這

樣便保證了每

個例項均有獨一無二的

記憶體位址。

C 空類大小

class a class b class c public a class d public b,public c 類a,b明明是空類,它的大小應該為為 為什麼 編譯器輸出的結果為 呢?這就是我們剛才所說的例項化的原因 空類同樣可以被例項化 每個例項在記憶體中都有乙個獨一無二的位址,為了達到這個目...

c 空類的大小

初學者在學習物件導向的程式語言時,或多或少的都些疑問,我們寫的 與最終生編譯成的 卻 大相徑庭,我們並不知道編譯器在後台做了什麼工作 這些都是由於我們僅停留在語言層的原因,所謂語言層就是教會我們一些基本的語法法則,但不會告訴我們為什麼這麼做?今天和大家談的一點感悟就是我在學習程式設計過程中的一點經驗...

c 空類的大小

定義乙個空類,沒有資料 class empty class test2 private empty private繼承 class test3 public empty public繼承 int tmain int argc,tchar argv cout class test1 class tes...