C 重寫(覆蓋) 過載 重定義 多型

2021-08-20 16:24:05 字數 1046 閱讀 3378

1 重寫(覆蓋)override

override是重寫(覆蓋)了乙個方法,以實現不同的功能。一般用於子類在繼承父類時,重寫(覆蓋)父類中的方法。函式特徵相同,但是具體實現不同。

重寫需要注意:

2 過載overload

overload是過載,一般是在乙個類實現若干過載的方法,這些方法的名稱相同而引數形式不同。但是不能靠返回型別來判斷。

過載需要注意:

3 重定義redefining

派生類對基類的成員函式重新定義,即派生類定義了某個函式,該函式的名字與基類中函式名字一樣。

重定義也叫做隱藏,子類重定義父類中有相同名稱的非虛函式(引數可以不同)。如果乙個類,存在和父類相同的函式,那麼這個類將會覆蓋其父類的方法,除非你在呼叫的時候,強制轉換為父類型別,否則試圖對子類和父類做類似過載的呼叫時不能成功的。

重定義需要注意:

4 多型polymorphism

多型的概念比較複雜,一種不嚴謹的說法是:繼承是子類使用父類的方法,而多型是父類使用子類的方法。

一般我們使用多型是為了避免在父類裡大量過載引起**臃腫且難於維護。

多型分為兩類:靜態多型性和動態多型性,以前學過的函式過載和運算子過載實現的多型性屬於靜態多型性,在程式編譯時系統就能決定呼叫哪個函式,因此靜態多型性又稱為編譯時的多型性。靜態多型性是通過函式的過載實現的。動態多型性是在程式執行過程中才動態地確定操作所針對的物件。它又稱執行時的多型性。動態多型性是通過虛函式實現的。

下面列舉乙個例項來說明他們:

class base

void fun1(string a) ;

class childa:public base

;class childb:pubic base

;int main()

執行結果:

childa display()

base say()

childa display()

base say()

childa say()

childb fun1(int)

總結:重寫(覆蓋)

重載重定義(隱藏)

C 過載 重寫 重定義 多型

多型是基於對抽象方法的覆蓋來實現的,用統一的對外介面來完成不同的功能。過載也是用統一的對外介面來完成不同的功能。那麼兩者有什麼區別呢?也叫覆蓋,子類重新定義父類中有相同名稱相同引數的虛函式,主要是在繼承關係中出現的,被重寫的函式必須是virtual的,重寫函式的訪問修飾符可以不同,儘管virtual...

c 過載,重寫 覆蓋,重定義 隱藏

關於c 的過載,重寫 又稱覆蓋 重定義 又稱隱藏 來做乙個小小的總結。過載最主要是指在同一作用域下的函式名相同,引數不同的函式過載,其強調同一作用域。同名同參,不同返回值不能作為過載,編譯器會提示函式重複定義。重寫和重定義主要在體現在繼承行為中,子類對父類函式的操作。重寫是虛函式的正確用法,指子類對...

C 過載 重寫 覆蓋 重定義 隱藏

我們經常會被過載 重寫 重定義經常被我搞混,今天就專門總結區別一下。1.過載概念 過載指的都是函式過載,函式過載就是函式的一種特殊情況,c 允許在同一作用域中宣告幾個功能類似的同名函式,這些同名函式的形参列 表 引數個數 型別 順序 必須不同,常用來處理實現功能類似資料型別不同的問題。2.構成過載的...