繼承類的sizeof

2022-04-08 18:23:46 字數 564 閱讀 9989

123

4567

891011

1213

1415

1617

1819

20

class

base

;class

derived

:public

base

;intmain()

對於base:a4位元組,b1位元組,3位元組對齊,共8位元組。

對於derived:d並沒有和b存在一起,而是在3位元組之外(base物件記憶體單元之後,即8位元組之後),再加上3位元組對齊,共12位元組。

這樣做是有目的的,如將基類的物件複製給派生類物件時,這樣分配記憶體不會對某個派生類物件成員造成未知的覆蓋。

將b物件拷貝到d物件。

derived d;

base b;

base *pb = &b;

base *pd = &d;

*pd = *pb;

類大小 sizeof 研究(虛繼承)

class top 基類的虛表入口,4位元組 接著看left跟right都是16位元組。本來除了top的8位元組,left裡只有int y 佔4位元組,還有4位元組佔在那裡?由於是虛繼承,虛繼承的子類都要包含乙個指向基類的指標,從而實現動態聯編。一次,要額外加4位元組的空間。所以一共是8 4 4 1...

類的sizeof(虛函式,虛繼承,空類是1)

1 空類的sizeof是1。空類是指沒有成員的類,類中的函式不佔空間,除非是虛函式。如 class a a void fun sizeof a 是1.注 class a1 a1 void fun char a 0 sizeof a1 也是1.vc6.0下編譯 2 若類中包含成員,則類物件的大小只包括...

使用sizeof計算虛繼承的類物件的空間大小

include using namespace std class a class b class c public a,public b class d virtual public a class e virtual public a,virtual public b class f int f...