亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

你真的知道C++對象大小嗎?

 更新時間:2021年01月08日 15:06:12   作者:雙魚座boyy  
這篇文章主要給大家介紹了關(guān)于C++對象大小的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

我們都直到char大小為1,int為4,那么C++中對象的大小是多少呢?

看三個問題:

  • C++中函數(shù)占不占對象的大小
  • 空類的大小是多少?
  • 如果類中有虛函數(shù),類的大小是多少?

一,C++中函數(shù)占不占對象的大小

看一段代碼:

可以看出,類的大小即為類的屬性a的大小為4,函數(shù)并不占對象的大小。

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

原因:

這樣定義的好處就是為了節(jié)省空間的大小。

假設(shè)此時類中有10個函數(shù),類又定義了100個對象。如果每個對象都包含一個函數(shù)的大小,那么就需要占用1000個函數(shù)空間的位置,這樣極大的消耗了資源。

實際上類的函數(shù)是放在代碼區(qū)的,哪個對象需要調(diào)用函數(shù),則從代碼區(qū)調(diào)用,因為函數(shù)并不是對象獨有屬性,所以并不沖突,這樣僅僅占10個函數(shù)空間位置就夠了。

這樣一對比,函數(shù)放在代碼區(qū)節(jié)省了很多的資源,因此函數(shù)并不占用對象的大小。

至于對象放的位置,如果new的就在堆區(qū),不然就在棧區(qū)。

二,空類的大小是多少?

看代碼:

我們會發(fā)現(xiàn),空類的大小變成了1,正常不應該是0嗎?

這樣設(shè)置的原因是因為每一個對象實例化都需要空間,這里系統(tǒng)默認給了一個占位符,占1字節(jié)大小

三,如果類中有虛函數(shù),類的大小是多少?

看圖片:

對比上面兩種情況,空類大小為1,但是函數(shù)又不占用空間,為什么函數(shù)變?yōu)樘摵瘮?shù)卻變成了4呢?

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

此時類中有了指針,因此對象的大小就變?yōu)榱?。

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

總結(jié)

到此這篇關(guān)于你真的知道C++對象大小的文章就介紹到這了,更多相關(guān)C++對象大小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論