class 派生類名: virtual 訪問標號 虛基類名,..
.;
#include
using namespace std;
class
a// 宣告為基類a
void fun(
) private:
int nv;
//私有成員};
class
b1:virtual public a//宣告a為虛基類,派生出b1
private:
int nv1;};
class
b2:virtual public a//宣告a為虛基類
private:
int nv2;};
//這裡繼承a類的成員繼承了2回,但是由於b1和b2都將a宣告為虛基類,所以c繼承a類的成員只會繼承1次
class
c:public b1,public b2
void fund(
) private:
int nvd;};
int main(
)執行結果:
member of a
member of b1
member of b2
member of c
fun of c
fun of a
classa}
;//定義基類
class
b: virtual public a };
//對基類a初始化
class
c: virtual public a };
//對基類a初始化
class
d: public b,public c};
不僅對b和c進行初始化,還要對a進行初始化
#include
using namespace std;
enum color
;//顏色列舉型別
class
circle
//圓類circle的定義
~circle(
)float area()}
;class
table
//桌子類table的定義
~table(
)float height()}
;class
roundtabe
:public table,public circle//圓桌類的定義
~roundtabe()}
;roundtable:
:roundtable(
float h,
float r,color c)
:table(h)
,circle(r)
//圓桌建構函式的定義
int main(
)建構函式與析構函式的呼叫順序相反
結果:table initialized!
circle initialized!
roundtable initialized!
the table properties are:
height=
15area=
12.5664
color=
1roundtable destroyed!
circle destroyed!
table destroyed!
多重繼承 虛繼承與虛基類
一 多重繼承 單重繼承 乙個派生類最多只能有乙個基類 多重繼承 乙個派生類可以有多個基類 class 類名 繼承方式 基類1,繼承方式 基類2,派生類同時繼承多個基類的成員,更好的軟體重用 可能會有大量的二義性,多個基類中可能包含同名變數或函式 多重繼承中解決訪問歧義的方法 基類名 資料成員名 或成...
多重繼承與虛基類
多重繼承 multiple inheritance,mi 虛基類虛基類使得從多個類 它們的基類相同 派生出的物件只繼承乙個基類物件。通過使用關鍵字virtual。例如,可以使worker被用作singer和waiter的虛基類 virtual和public的次序無關緊要 class singer v...
C 多重繼承 虛基類
使用多個基類的繼承被稱為多重繼承 mi mi描述的是有多個直接基類的類。與單繼承一樣,公有mi表示的也是 is a關係。mi帶來的兩個主要問題 1.從兩個不同的基類繼承同名方法。2.從兩個或更多相關基類那裡繼承同一類的多個例項。例如 singer 和 waiter都繼承了乙個worker 元件,因此...