C 類成員在記憶體中的儲存及對齊方式

2022-08-24 07:12:15 字數 526 閱讀 7788

前言:資料對齊的基本理論參見文章:

一、空類的大小

c++中空類的大小是1,這是因為空類也可以被例項化,為了確保每乙個例項在記憶體中都有乙個獨一無二的位址,編譯器往往隱含給乙個空類加乙個位元組。

二、類中的成員函式與非虛成員函式

類中的非虛成員函式不占用空間,虛函式表占用四個位元組,只要有虛函式(無論有幾個)都只占用四個位元組。

三、派生類與基類

派生類繼承基類的所有成員(包括私有資料成員),派生類的大小是在基類的大小的基礎上再增加自己資料成員的空間。

四、虛表與類資料成員

虛函式表首先存入記憶體中,然後是資料成員。

五、類的與結構體

類的對其規則與結構體基本一致,即取資料成員本身的對其數與編譯器預設對齊數之間取小的那個數作為實際對齊數。

六、類的資料成員

類的資料成員按其宣告順序加入記憶體,(與其訪問許可權無關,即無論public,private,protected的資料成員,只看其宣告順序)

七、static 資料成員不占用類的空間,對其派生類亦是如此。

C 類成員在記憶體中的儲存及對齊方式

一 空類的大小 c 中空類的大小是1,這是因為空類也可以被例項化,為了確保每乙個例項在記憶體中都有乙個獨一無二的位址,編譯器往往隱含給乙個空類加乙個位元組。二 類中的成員函式與非虛成員函式 類中的非虛成員函式不占用空間,虛函式表占用四個位元組,只要有虛函式 無論有幾個 都只占用四個位元組。成員函式還...

C 成員函式在記憶體中的儲存方式

用類去定義物件時,系統會為每乙個物件分配儲存空間。如果乙個類包括了資料和函式,要分別為資料和函式的 分配儲存空間。按理說,如果用同乙個類定義了10個物件,那麼就需要分別為10個物件的資料和函式 分配儲存單元,如下圖所示。能否只用一段空間來存放這個共同的函式 段,在呼叫各物件的函式時,都去呼叫這個公用...

C 成員函式在記憶體中的儲存方式

用類去定義物件時,系統會為每乙個物件分配儲存空間。如果乙個類包括了資料和函式,要分別為資料和函式的 分配儲存空間。按理說,如果用同乙個類定義了10個物件,那麼就需要分別為10個物件的資料和函式 分配儲存單元,如下圖所示。能否只用一段空間來存放這個共同的函式 段,在呼叫各物件的函式時,都去呼叫這個公用...