C 多型總結

2021-09-26 21:48:17 字數 1319 閱讀 2632

多型的概念

多型的定義

多型是在不同繼承關係的類物件,去呼叫同一函式,產生了不同的行為。比如student繼承了person。 person物件買票全價,student物件買票半價。

必須通過基類的指標或者引用呼叫虛函式

被呼叫的函式必須是虛函式,且派生類必須對基類的虛函式進行重寫

虛函式

即被virtual修飾的類成員函式稱為虛函式

class

person

};

虛函式的重寫

虛函式的重寫(覆蓋):派生類中有乙個跟基類完全相同的虛函式(即派生類虛函式與基類虛函式的返回值型別、函式名字、引數列表完全相同),稱子類的虛函式重寫了基類的虛函式。

虛函式重寫的兩個例外:

協變(基類與派生類虛函式返回值型別不同)

派生類重寫基類虛函式時,與基類虛函式返回值型別不同。即基類虛函式返回基類物件的指標或者引 用,派生類虛函式返回派生類物件的指標或者引用時,稱為協變。

b類必須為a類的子類。

a類和b類可以是person和student自己本身,也可以是其他類。

classa;

classb:

public a

;class

person};

class

student

:public person

};

析構函式的重寫(基類與派生類析構函式的名字不同)

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

class

car}

;class

benz

:public car

};

2. override: 檢查派生類虛函式是否重寫了基類某個虛函式,如果沒有重寫編譯報錯。

class

car}

;class

benz

:public car

};

過載、覆蓋(重寫)、隱藏(重定義)的對比

詳情請看我的另一篇部落格—>c++過載,重寫,重定義之間的區別以及多型的概念

概念

介面繼承和實現繼承

c 多型總結

多型 多型可以簡單地概括為 乙個介面,多種方法 程式在執行時才決定呼叫的函式,它是物件導向程式設計領域的核心概念。接下來,我寫乙個簡單地函式來說明多型 includeusing namespace std int add int left,int right float add float left...

C 多型總結

多型繫結分兩種情況,一種是靜態繫結即編譯時多型,一種是動態繫結即執行時多型是利用過載實現的。對於非虛函式的成員來說,系統在編譯時,按照函式的引數的區別來繫結要實現的操作,在編譯時就確定了呼叫哪個函式。簡單地說,虛函式是動態繫結的基礎 動態繫結是實現執行時多型的基礎。要觸發動態繫結,需滿足兩個條件 1...

C 多型總結

多型概念 同乙個事物在不同環境下具有不同的狀態 虛函式概念 在函式返回值前加上 virtual 關鍵字 多型分類 靜態多型 早繫結 在編譯器編輯時確認要呼叫的函式 1 函式過載 2 泛型程式設計 動態多型 晚繫結 在程式執行時確認將要呼叫的函式 1 基類中存在虛函式 2 繼承當中對基類進行重寫並且 ...