你真的知道C 物件大小嗎?

2022-09-26 21:00:21 字數 654 閱讀 9717

我們都直到char大小為1,gdt**lonint為4,那麼c++中物件的大小是多少呢?

看一段**:

可以看出,類的大小即為類的屬性a的大小為4,函式並不佔物件的大小。

那麼這個的原因是什麼呢?

原因:這樣定義的好處就是為了節省空間的大小。

假設此時類中有10個函式,類又定義了100個物件。如果每個物件都包含乙個函式的大小,那麼就需要占用1000個函式空間的位置,這樣極大的消耗了資源。

實際上類的函式是放在**區的,哪個物件需要呼叫函式,則從**區呼叫,因為函式並不是物件獨有屬性,所以並不衝突,這樣僅僅佔10個函式空間位置就夠了。

這樣一對比,函式放在**區節省了很多的資源,因此函式並不占用物件的大小。

至於物件放的位置,如果new的就在堆區,不然就在棧區。

看**:

我們會發現,空類的大小變成了程式設計客棧1,正常不應該是0嗎?

這樣設定的原因是因為每乙個物件例項化都需要空間,這裡系統預設給了乙個佔位符,佔1位元組大小

看:對比上面兩種情況,空類大小為1,但是函式又不占用空間,為什麼函式變為虛函式卻變成了4呢?

因為當有虛函式時,編譯器會給這個類加上虛函式指標 vptr(32位是4,64位是8)

此時類中有了指標,因此物件的大小就變為了4。

上面就是類中不同情況的大小。

你真的知道 strtotime 嗎?

課堂小提問 echo date y m d strtotime 1 month strtotime 2017 03 31 輸出什麼?echo date y m d strtotime 1 month strtotime 2017 08 31 輸出又是什麼?現在公布正確答案了 echo date y ...

你真的知道HTML嗎?

經過幾次面試當中,被問及到最基礎的東西,沒想到回答不上來,有點蛋痛,今天特地的複習了一下!內容 1.doctype 文件型別 的作用是什麼?有多少文件型別?2.瀏覽器標準模式和怪異模式之間的區別是什麼?3.html dhtml xhtml是什麼?以及它們的區別是什麼?一 doctype 文件型別 的...

程式設計 你真的知道開源嗎?

開源,opensource 全稱為開放源 開源就是要使用者利用源 在其基礎上修改和學習的,但開源系統同樣也有版權,同樣也受到法律保護。你對原始碼進行二次開發進行修改bug修復等版權可以標為自己開發。開源被非盈利軟體組織 美國的opensourceinitiative協會 註冊為認證標記,並對其進行了...