我們都直到char大小為1,int為4,那么C++中物件的大小是多少呢?
看三個問題:
- C++中函式占不占物件的大小
- 空類的大小是多少?
- 如果類中有虛函式,類的大小是多少?
一,C++中函式占不占物件的大小
看一段代碼:

可以看出,類的大小即為類的屬性a的大小為4,函式并不占物件的大小,
那么這個的原因是什么呢?
原因:
這樣定義的好處就是為了節省空間的大小,
假設此時類中有10個函式,類又定義了100個物件,如果每個物件都包含一個函式的大小,那么就需要占用1000個函式空間的位置,這樣極大的消耗了資源,
實際上類的函式是放在代碼區的,哪個物件需要呼叫函式,則從代碼區呼叫,因為函式并不是物件獨有屬性,所以并不沖突,這樣僅僅占10個函式空間位置就夠了,
這樣一對比,函式放在代碼區節省了很多的資源,因此函式并不占用物件的大小,
至于物件放的位置,如果new的就在堆區,不然就在堆疊區,
二,空類的大小是多少?
看代碼:

我們會發現,空類的大小變成了1,正常不應該是0嗎?
這樣設定的原因是因為每一個物件實體化都需要空間,這里系統默認給了一個占位符,占1位元組大小
三,如果類中有虛函式,類的大小是多少?
看圖片:

對比上面兩種情況,空類大小為1,但是函式又不占用空間,為什么函式變為虛函式卻變成了4呢?
因為當有虛函式時,編譯器會給這個類加上虛函式指標 vptr(32位是4,64位是8)
此時類中有了指標,因此物件的大小就變為了4,
上面就是類中不同情況的大小,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/245692.html
標籤:其他
上一篇:Web基本教程~05.CSS屬性
