多繼承與虛函式

2022-06-30 20:06:10 字數 1094 閱讀 8199

多繼承:

類中protected屬性是指該類中的成員函式可以訪問protected屬性的資料成員,但類物件不可以訪問。而public屬性的資料成員,類的成員函式和類物件都可以訪問。

(1)公有繼承:

(2)私有繼承

(2)保護繼承

菱形繼承問題:當b、c有共同的基類a派生而來,而類d又繼承b和c,這時b,c是d的直接基類,a為d的間接基類。此時會產生乙個問題,當d繼承b和c時,a有多份拷貝,這時會浪費記憶體空間,而且當類d訪問a中的函式成員時,不知道訪問的是有b繼承的還是c繼承的,此時可以將他們的共同基類設定為虛基類來解決二義性問題。

哪些函式不能為虛函式?

建構函式、普通函式(不是成員函式)、靜態成員函式、友元函式。

虛函式的訪問。

(1)通過物件名訪問虛函式時呼叫哪個類的函式取決於定義物件名的型別。物件型別是基類時,就呼叫基類的函式;物件型別是子類時,就呼叫子類的函式。

(2)使用指標訪問非虛函式時,編譯器根據指標本身的型別決定要呼叫哪個函式。

(3)使用指標訪問虛函式時,編譯器根據指標所指物件的型別決定要呼叫哪個函式。

(4)使用引用訪問虛函式,與使用指標訪問虛函式類似,不同的是,引用一經宣告後,引用變數本身無論如何改變,其呼叫的函式就不會在改變,始終指向開始定義時的函式。

虛函式與多繼承

問題 假設有兩個基類a和b,它們有乙個相同簽名的虛函式void foo 但是擁有不同的實現。現在要求建立乙個新類c,它同時繼承a和b,也有相同的簽名的函式void foo 並能分別對a和b中的foo函式進行重寫 overwrite 已知條件對應的 如下 include using namespace...

多繼承與虛函式

include using namespace std enum color class animal virtual int getage virtual void setage int age private int itsage animal animal int age itsage age...

C 多繼承與虛繼承

目錄 多繼承與虛繼承以及存在的問題 例子 虛繼承有了多繼承,虛繼承才會有意義 如果有個菱形結構的繼承,爺爺類為a,然後b,c是a的派生類,最後d是b和c的派生類,如果在a中有乙個成員變數a,d去呼叫就會出現訪問不明確,虛繼承就可以解決訪問不明確的這種問題 如果這樣繼承b,c虛繼承了a,virtual...