91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解C++中對象的大小

發布時間:2021-01-11 15:13:58 來源:億速云 閱讀:188 作者:Leah 欄目:開發技術

這篇文章給大家介紹詳解C++中對象的大小,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

看三個問題:

  • C++中函數占不占對象的大小

  • 空類的大小是多少?

  • 如果類中有虛函數,類的大小是多少?

一,C++中函數占不占對象的大小

看一段代碼:

詳解C++中對象的大小

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

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

原因:

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

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

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

這樣一對比,函數放在代碼區節省了很多的資源,因此函數并不占用對象的大小。

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

二,空類的大小是多少?

看代碼:

詳解C++中對象的大小

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

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

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

看圖片:

詳解C++中對象的大小

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

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

此時類中有了指針,因此對象的大小就變為了4。

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

關于詳解C++中對象的大小就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邢台县| 陆川县| 泗阳县| 新宾| 东乌珠穆沁旗| 安阳县| 仙游县| 都兰县| 中宁县| 浦北县| 安多县| 南召县| 丰宁| 海宁市| 龙山县| 巨鹿县| 潍坊市| 东乡族自治县| 黄冈市| 九龙县| 共和县| 东光县| 盖州市| 湘潭县| 安福县| 延长县| 开阳县| 昂仁县| 义马市| 朔州市| 泰安市| 常山县| 屯留县| 肃北| 滕州市| 昆山市| 新营市| 广安市| 太湖县| 阿瓦提县| 怀来县|