C sizeof 函式二 類在記憶體中的分布

2022-09-01 16:33:11 字數 993 閱讀 9366

/**

* @file classcode _sizeof.cpp

* @brief 1.空類的大小只有乙個位元組。

* 2.乙個類中,成員函式(包括靜態與非靜態)和靜態資料成員都是不占用類物件的儲存空間。

* 3.類中存在虛函式,虛函式本身並不占用類物件的記憶體空間,但是有乙個指向虛函式的虛指標,即占用vptr的大小;並且無論存在多少虛函式,都只有乙個vptr的大小

* 4.普通繼承,派生類繼承了所有基類的函式與成員,要按照位元組對齊來計算大小

* 5.虛函式繼承,不管是單繼承還是多繼承,都是繼承了基類的vptr。(32位作業系統4位元組,64位作業系統 8位元組)!

* 6.虛繼承,繼承基類的vptr。

* @author major

* @version v1

* @date 2020-07-07

**/#includeusing namespace std;

class a{}; //1

class b;//1

class c;

};//16

class d;

virtual void fun2() {};

virtual void fun3() {};

virtual void fun4() {};

};//16

class e

};//8

class f:public e;//8

class g

};//8

class h : virtual public e, virtual public g

};//16

class i : virtual public e, virtual public g, virtual public d

};//32

int main()

類在記憶體中的分配

對於乙個宣告好的類,裡面可能有成員函式,靜態成員函式,成員變數,靜態成員變數,虛函式等,那麼這些資料都是怎麼分配到記憶體的呢?class a 乙個簡單的類,方便下面描述資訊 public void show cout i am a 下面給出一些結論以及一些簡單的分析 1.類的普通成員函式以及靜態成員...

記憶體(二) 類的例項化占用

轉 初學者在學習物件導向的程式語言時,或多或少的都些疑問,我們寫的 與最終生編譯成的 卻 大相徑庭,我們並不知道編譯器在後台做了什麼工作 這些都是由於我們僅停留在語言層的原因,所謂語言層就是教會我們一些基本 的語法法則,但不會告訴我們為什麼這麼做?今天和大家談的一點感悟就是我在 學習程式設計過程中的...

複習C (二) 類和函式

由於c 最大的特點 物件導向,類的概念可以說是c 的核心概念。個人認為類很像資料庫知識中的乙個table 當然不完全一樣 事實上,cout也是乙個類物件,是乙個ostream類物件。ostream類定義描述了ostream物件表示的資料以及可以對它進行的操作。這種類並不是使用者設計的 為什麼單獨說這...