c++ 類的對象的大小

c++ 類的大小


//從以上的幾個例子不難發現類的大小:
 0. 空類的對象,對象大小是1。因爲這樣,纔能有唯一的地址空間與之對應。否則空類的對象數組 obj[10],中ojb[0] 和 obj[1]公用地址空間了。
1.爲類的非靜態成員數據的類型大小之和.
2.有編譯器額外加入的成員變量的大小,用來支持語言的某些特性(如:指向虛函數的指針).
這裏,詳細說明一下。
(1) 沒有父類
不管有幾個虛函數,只要有虛函數,就會有一個指向虛函數表的指針,4bytes大小(32bit 系統下)。
(2) 有父類。
複雜,有待討論。
虛擬繼承等。
還要注意父類中有虛函數,也會繼承過來,有虛函數表指針。
3.爲了優化存取效率,進行的邊緣調整.
與類中的構造函數,析構函數以及其他的成員函數無關.

對象在內存中分爲幾個部分。
1. 虛函數表 virtual table.
2. 成員變量

內存中的排列順序
父類1的v-table   其中包括該類的v-table,接在父類1的v-table後面
父類1的成員變量
父類2的v-table
父類2的成員變量
父類3的v-table
父類3的成員變量
...
該類的成員變量


#  父類的順序是類定義時繼承的順序
#  每個類中的成員變量的順序是按照成員變量聲明的順序存儲,會有對齊的情況。



陳浩的csdn博客,文章詳細介紹了虛函數。
http://blog.csdn.net/haoel/article/details/1948051


http://www.cnblogs.com/luxiaoxun/archive/2012/09/01/2666395.html
http://blog.chinaunix.net/uid-26722078-id-3756839.html
http://blog.csdn.net/hackbuteer1/article/details/7475622
發佈了79 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章