//虛繼承對類大小的影響
//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 仍然會被複製到...