a、b 是基類,c 是派生類
**如下:
#define _crt_secure_no_warnings
#includeusing namespace std;
//class c同時繼承了class a 和class b 建構函式c初始化只能借助建構函式a和建構函式b
//命名衝突 show()函式在每個類裡面都有 會在繼承時形成遮蔽,
//如果要呼叫基類中的函式 必須顯式的呼叫(指明函式的呼叫作用域)
class a
~a()
public:
void show();
protected:
int m_a;
int m_b;
};void a::show()
class b
~b()
public:
void show();
protected:
int m_c;
int m_d;
};void b::show()
class c :public a, public b
~c()
public:
void show();
protected:
int m_e;
};void c::show()
void test01()
int main()
執行結果:
a's construtor
b's construtor
c's construtor
1 2 3 4 5
1 2
3 4
c's destrutor
b's destrutor
a's destrutor
class c 的記憶體模型如下:
檢視記憶體結構方法:
1、開啟vs自帶的開發人員命令列工具
2、轉到儲存專案的 e:盤,cd到*.cpp檔案所在目錄,輸入如下命令
其中 結尾處的c為 class 類名 test.cpp是c++原始檔
感興趣的小夥伴可以檢視
C 物件模型(中)多繼承
例如下面 class b virtual void func 2 虛函式 protected int b class c virtual void func 3 虛函式 protected int c class d public b public c virtual void func 4 der...
C 物件模型5 多繼承下的物件模型
從單繼承可以知道,派生類中只是擴充了基類的虛函式表。如果是多繼承的話,又是如何擴充的?1 每個基類都有自己的虛表。2 子類的成員函式被放到了第乙個基類的表中。3 記憶體布局中,其父類布局依次按宣告順序排列。4 每個基類的虛表中的 print 函式都被 overwrite 成了子類的 print 這樣...
C 物件的記憶體布局 多繼承
多繼承中,乙個派生類可以有多個基類.多繼承是c 頗受爭議的乙個語法特性,它就像一把雙刃劍,在提供便利及強大功能的同時,也帶來了一些容易使人產生錯誤的不便.在此主要說明一下多繼承時物件的記憶體分布 1.與單繼承相同,首先建立基類的物件,但要遵循一定的順序,這個順序是由派生類宣告時決定.2.和單繼承也一...