close
多重繼承與虛擬基礎類別:
(a) 一個類別可以被許多不同類別繼承,而一個類別也可以繼承許多不同類別(這稱為多重繼承),如:
class A{//類別內容};
class B{//類別內容};
class C : public A, public B{//類別內容}; //類別C繼承了類別A,也繼承了類別B
做圖為:
(b) 若有一種繼承形態為:
乍看之下,程式碼似乎應該是:
class A{//類別內容};
class B : public A{//類別內容};
class C : public A{//類別內容};
class D : public B, public C{//類別內容};
但這種繼承形態之下,類別D繼承了類別A兩次。事實上,為避免資料重複存取造成系統資源浪費或出錯,正確的程式碼應該是:
class A{//類別內容};
class B : virtual public A{//類別內容}; //利用virtual關鍵字將B類別設成相對於D的虛擬基礎類別
class C : virtual public A{//類別內容}; //利用virtual關鍵字將C類別設成相對於D的虛擬基礎類別
class D : public B, public C{//類別內容};
文章標籤
全站熱搜
留言列表