繼承與多型 virtual關鍵字的使用場景

2021-09-12 18:16:26 字數 813 閱讀 9105

父類子類有同名函式時在外部呼叫時如果不加父類名則會預設呼叫子類的函式。c++有函式重寫的功能需要新增virtual關鍵字,當時寫上篇博文的時候在想那麼既然預設使用子類的同名函式那麼這個virtual有什麼意義呢?

這篇博文主要講述 多型:一句相同的語句能有不同的實現。

當父類和子類有同名函式,呼叫時牽扯到了指標那麼就跟virtual有關係了。

看以下幾種情況:

定義兩個類:父類子類有同名函式print();

1 class parent

2 void howtoprint2(parent &base) //傳參為父類的引用

//函式呼叫 均執行父類的函式

howtoprint(&p1);

howtoprint(&c1);

howtoprint2(p1)

howtoprint2(c1);

總結:

其實上面三個情景下當我們乙個指標指向了子類,或者引用子類那麼我們希望呼叫函式的時候是呼叫子類的函式,但是實際情況卻不是這樣。這時候就需要virtual關鍵字了。

1 lass parent

2 傳入的指標決定了最後執行的函式,出入父類指標則執行父類的print函式,出入父類的派生類則呼叫這個派生類的print函式,這樣一句相同的語句就有了不同的實現。

void howtoprint(parent *base) //傳參為父類的指標

停止學習的那天就是到達頂峰的那天,以後只有下坡路了。 ------------旦暮潮流急,夕陽無限好

繼承,super關鍵字,多型

1.繼承性 格式 class a extends b a 子類,派生類,subclass b 父類,超類,基類,superclass 體現 一旦子類a繼承父類b以後,子類a中就獲取了父類b中宣告的所有屬性和方法。特別的,父類宣告為private的屬性或方法,子類繼承父類以後,仍然認為獲取了父類中的私...

繼承與this關鍵字

作用 實現對程式的反覆使用,提高程式的維護性。關鍵字extends 格式 修飾符 class 子類名 extends 父類名 使用原則 子類可以繼承父類中所有可被子類訪問的成員變數與成員方法 public protected 使用this關鍵字 當區域性變數和成員變數的名字相同時,成員變數就會被隱藏...

C 學習筆記 關鍵字virtual 虛繼承

依舊是程設2的筆記 普通繼承與虛繼承,只有在派生類重複繼承某一基類時,才有區別。virtual可以使派生類在重複繼承乙個基類時,只產生唯一的乙份基類副本。如上圖,當b,c的繼承 為 class b virtual public a class c virtual public a 此時d只會繼承乙份...