C++對象記憶體結構

來源:互聯網
上載者:User

對簡單對象來說,記憶體結構布局很簡單,遵循以下描述:

1、非待用資料成員是影響對象所佔據記憶體大小的主要因素,隨著對象的增加而增加;

2、所有對象共用一份待用資料成員,用sizeof計算對象大小時不會包含待用資料成員佔據記憶體的大小;

3、靜態成員函數和非靜態成員函數不影響對象記憶體的大小;

4、如果對象中包含虛函數,會增加4位元組的空間用來儲存虛函數表指標。

 

對單繼承類,遵循如下描述:

在衍生類別執行個體頭部存在一個基類執行個體,虛函數表與基類公用一個。基類的記憶體布局和簡單對象的記憶體布局一樣,衍生類別記憶體布局就是基類的記憶體布局下面加上衍生類別自己添加的成員所構成的記憶體布局,同時只是修改基類的虛函數表而不會新增虛函數表指標。對一個類來說,整個程式只有一個虛函數表,不管對象有多少。

 

對多重繼承基本上和單繼承一樣,只有一種例外,就是衍生類別派生自具有共同基類的兩個父類時會造成建立該衍生類別的父類的父類的兩個執行個體對象,解決方案就是採用虛繼承,虛繼承可以只產生一個同一父類執行個體。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.