C 父子類間的衝突(3) 多型

2021-10-21 15:43:02 字數 774 閱讀 5963

c++三大特性之一就是「多型」,「多型」咋一聽很高大上,其實是很容易理解的。我們先直白地理解:多型就是乙個事物有很多種狀態,帶入到c++中,結合之前對於重寫和過載的理解,我們是不是有理由懷疑函式過載就是c++中的一種多型?

#include

"stdio.h"

class

parent};

class

child

:public parent};

void

judge_which_exec

(parent *p)

//父類物件指標作為函式引數

可以看到輸出果然如預期,根據執行時傳入地物件引數不同,列印了不同類中地函式,這就是c++中地動態多型。我們平時所說地c++地多型特性,一般特指動態多型性。

virtual 關鍵字時c++中支援多型地唯一方式。

被重寫地虛函式可表現出多型地特性。

靜態聯編就是編譯時就已經決定好了所有地函式地執行、呼叫方式。

動態聯編就是執行時根據引數不同,動態決定函式地執行、呼叫。

virtual 也是能繼承地,父類中地函式宣告為virtual ,在子類中重寫後,即使不加virtual 關鍵子宣告,它也是虛函式。

王雄 2021.03.10 首次更新

C 父子類間的衝突(2) 賦值相容

父類和子類之間是繼承的關係,子類擁有父類的一切屬性 又有自己獨有的屬性。我們都知道把double賦給float會發生精度縮小的問題,那麼用子類物件去初始化父類物件會發生什麼呢?看下面一段 include stdio.h class parent class child public parent i...

C 父子類間的衝突(1) 同名覆蓋問題

我們都知道c 有三大特性,封裝 繼承 多型。今天講一下多型。首先我們先了解一下父子類之間的同名覆蓋問題。先看一段 include stdio.h class parent int mi class child parent int mi intmain int argc char ar 我在父類pa...

C 深度剖析教程26 父子間的衝突

今天繼續來學習c 父類與子類之間的衝突。加qq1126137994共同學習交流。子類中是否可以定義父類中的同名成員,如果可以,如何區分?如果不可以那又為什麼?下面還是以乙個簡單的例子,來說明上述幾點的正確性 include include using namespace std class pare...