多重基類和虛擬基類

2021-08-09 03:52:44 字數 601 閱讀 8880

多重繼承(multiple inheritance,mi)。

虛基類虛基類使得從多個類(它們的基類相同)派生出的物件只繼承乙個基類物件。通過使用關鍵字virtual。

例如,可以使worker被用作singer和waiter的虛基類(virtual和public的次序無關緊要)。

當基類是虛基類,派生類將包含基類的乙個子物件;如果基類不是虛基類,派生類將包含多個子物件。當類通過多條虛途徑和非虛途徑繼承某個特定的基類時,該類將包含乙個表示所有的虛途徑的基類子物件和分別表示各條非虛途徑的多個基類子物件。

使用非虛基類時,如果類從不同的類那裡繼承了兩個或更多的同名成員(資料或方法),則使用該成員名時,如果沒有用類名進行限定,將導致二義性。但如果使用了虛基類,則不一定會導致二義性。這時,如果某個名稱優先於(dominate)其它所有名稱,則使用它時,即使不用限定符,也不會導致二義性。

派生類中的名稱優先於直接或間接祖先類中的相同名稱。

class b

;class c:virtual public b

;class d:public c

;class e:virtual public b

;class f:public d,public e

C 多重繼承和基類位址

c 支援多重繼承,比如 class derived public base1,public base2 virtual void theinte ce 0 int somedata1 base class class b int somedata2 class c public b,public a...

虛基類和多重繼承總結

1,虛基類,其建構函式總是在最後乙個層次最先並且真正被執行。例項 include using namespace std class a virtual a class b virtual b class c virtual c class d virtual d class e public a,...

多重繼承與虛基類

多重繼承 multiple inheritance,mi 虛基類虛基類使得從多個類 它們的基類相同 派生出的物件只繼承乙個基類物件。通過使用關鍵字virtual。例如,可以使worker被用作singer和waiter的虛基類 virtual和public的次序無關緊要 class singer v...