覆蓋(重寫) vs 過載 vs 重定義

2021-06-09 05:43:23 字數 404 閱讀 7574

重寫(override),過載(overload),重定義(redefine)的區別

參見:

重寫又稱為覆蓋,是指父類的虛函式在子類中被重寫(覆蓋),返回值和引數列表相同。

一般來說,如果父類的某個函式用virtual修飾,即使派生類中的同名函式沒有用virtual修飾,只有滿足下列條件,派生類的該函式也是虛函式:

函式名字相同,引數列表相同(個數和型別),返回值相同或者滿足型別相容規則。

重定義是指對父類的函式(不是virtual修飾的)重新定義。

過載是指具有相同的函式名,不同的引數列表(必須不同)的函式。(與返回值無關)

#include using namespace std;

class base

過載 重寫(覆蓋) 隱藏(重定義)

1 過載要求 函式名相同,引數不同 個數 型別 常函式也可以作為過載判斷。注意返回值不是過載的判斷標準。2 重寫 即覆蓋 要求 要求基類函式為虛函式,且基類函式和派生類函式名 引數等相同。3 隱藏 即重定義 要求 子類重新定義父類中有相同名稱的非虛函式 引數列表可以不同 4 重寫和隱藏都是發生在基類...

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

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

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

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