C 多型入門

2021-10-19 13:03:03 字數 2133 閱讀 6625

4. 過載 覆蓋 隱藏 的對比

5. 抽象類

多型是在不同繼承關係的類物件,去呼叫同一函式,產生了不同的行為。

比如student繼承了person。person物件買票全價,student物件買票半價。

繼承中構成多型的條件:

必須通過基類指標或者引用呼叫虛函式被呼叫的函式必須是虛函式,且派生類必須對基類的虛函式進行重寫

#include

class

person};

class

student

:public person};

void

test()

輸出:

全價票

半價票

class

person

};

class

person};

class

student

:public person

};

class

person};

class

student

:public person

};

①協變(父子類中重寫虛函式的返回值不同

classa;

classb:

public a

;class

person};

class

student

:public person

};

②虛析構函式的重寫(父子類中虛析構函式函式名不同

class

person};

class

student

:public person };

void

test()

輸出:

~

person()

~student()

~person

()

① final:修飾虛函式,表示該函式不能再被重寫

class

car}

;class

benz

:public car

};

報錯:error c3248: 「car::drive」: 宣告為「final」的函式無法被「benz::drive」重寫

② override:檢查子類虛函式是否重寫了父類某個虛函式,如果沒有重寫編譯報錯

class

car}

;class

benz

:public car

};

報錯:error c3668: 「benz::drve」: 包含重寫說明符「override」的方法沒有重寫任何基類方法

class

car;

class

benz

:public car};

class

bmw:

public car};

void

test()

輸出

benz-舒適

bmw-操控

C 入門 多型(二)

c 入門 多型 二 一.簡單工廠設計模式 核心 根據使用者的輸入建立物件賦值給父類 namespace demo 簡單工廠的核心 根據使用者的輸入建立物件賦值給父類 public static notebook getnotebook string brand return nb public ab...

C 快速入門 10 多型

當子類繼承父類,並且子類重寫了父類的函式的時候,當我們使用父類物件指向子類引用的時候,我們希望呼叫的是子類的函式,而不是父類的函式,如果當父類物件指向自身的時候,我們希望呼叫的是父類自身的函式,而不是子類的函式,這就是c 中的多型,這就意味著,乙個父類可以有多種指向方式,我們完全可以讓多個類繼承於同...

c 從入門到精通 多型

多型按字面的意思就是多種形態。當類之間存在層次結構,並且類之間是通過繼承關聯時,就會用到多型。c 多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式。下面的例項中,基類 shape 被派生為兩個類,如下所示 include using namespace std class sha...