先介紹乙個問題,乙個空類的大小是多少?
我們不妨測試一下:
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...