#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 執行本類建構函式體 總結為一句 首先初始化本類的基類部分,然後按照宣告的順序依次...