虛繼承對類大小的影響

2021-08-29 00:01:28 字數 1003 閱讀 5938

//虛繼承對類大小的影響

//virtual 存在,共享,間接

#include using namespace std;

#define prt(x) coutprt(&dd); //執行時會根據虛基類表找到dd中的虛基類部分的位址,

prt(&(pp->bb_));//將其賦值給pp

return 0;}/*

虛繼承後類的記憶體模型

b1+---------+ 虛基類表指標指向虛基類表

| vbptr |---+ vbtl

+---------+ | +---------+

| b1_ | | | 0 |本類位址與虛基類表指標位址的差,如果沒有虛函式(虛表)則為0

+---------+ +-->+---------+

| bb_ |bb | 8 |虛基類位址與虛基類表指標位址的差

+---------+ +---------+

dd+---------+

| vbptr |---+ vbtl

+---------+ | +---------+

| b1_ | | | 0 |

+---------+ +-->+---------+

| vbptr |---+ | 20 |

+---------+ | +---------+

| b2_ | |

+---------+ | +---------+

| dd_ | | | 0 |

+---------+ +-->+---------+

| bb_ | | 12 |

+---------+ +---------+

*/

虛繼承和虛函式對sizeof的影響

先看例程 include include include include using namespace std class a const int size class a2 class b virtual public a class c public a class d public virt...

虛繼承和虛函式對sizeof的影響

先看例程 include include include include using namespace std class a const int size class a2 class b virtual public a class c public a class d public virt...

含有虛函式,虛繼承的類的大小

當類中含有虛繼承時 在vs環境下,linux環境下有歧義 1.派生類物件中會新增乙個指標,該指標指向虛繼承的基類,稱為虛類指標 cptr 每乙個指標只指向其中乙個虛繼承的類,也就是說,虛繼承了幾個類,就會有幾個cptr。2.父類當中的成員變數 虛函式指標 vptr 虛類指標 cptr 仍然會被複製到...