C 派生類物件模型

2021-06-02 13:11:16 字數 884 閱讀 9948

#include using namespace std;

class base

virtual ~base(){}

int get()const

private:

int num;

};class base1

virtual ~base1(){}

private:

int helthy;

};class base2

virtual ~base2(){}

private:

int aa;

};class derived:public base,public base1,public base2

~derived(){}

private:

int id;

};int main()

/**multiple inheritance class object model

|--------| <<---- this(base,derived) base *pb = new derived;derived md1;

| base |

|--------| <<---- this(base1) base1 *pb1 = new derived;

| base1 |

|--------| <<---- this(base2) base2 *pb2 = new derived;

| base2 |

|--------| ---->> derived class object model

| derived|

|--------|

**/

派生類物件模型之多繼承派生類物件模型

c 是支援多繼承的,那麼多繼承關係中派生類物件模型和單繼承關係中有什麼不一樣呢?我們來看一看。首先給出乙個多繼承關係 class base1 int b1 class base2 int b2 class derive public base1,public base2 int d 類base1有乙...

派生類物件模型之菱形繼承派生類物件模型

當繼承關係超過兩重後,就不可避免地出現菱形繼承的問題,什麼是菱形繼承呢?我們來看乙個圖 像這樣,類b1 b2繼承自類a,而類c又與類b1 b2是多繼承的關係,整個繼承關係呈菱形,這就是菱形繼承。那麼菱形繼承存在什麼問題呢?先給出這樣乙個繼承關係 class a int a class base1 p...

C 派生類物件構造順序

構造依如下順序 1.呼叫本類的基類的建構函式 1.1 按照基類成員定義順序對每個成員執行初始化 1.2 執行基類建構函式體 2.呼叫本類的建構函式 2.1 按照本類成員定義順序引用初始化列表對每個成員執行初始化 2.2 執行本類建構函式體 總結為一句 首先初始化本類的基類部分,然後按照宣告的順序依次...