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

2021-08-11 04:36:51 字數 938 閱讀 6203

關於c++的過載,重寫(又稱覆蓋),重定義(又稱隱藏),來做乙個小小的總結。

過載最主要是指在同一作用域下的函式名相同,引數不同的函式過載,其強調同一作用域。同名同參,不同返回值不能作為過載,編譯器會提示函式重複定義。

重寫和重定義主要在體現在繼承行為中,子類對父類函式的操作。重寫是虛函式的正確用法,指子類對父類的虛函式(帶virtual)進行同名同參重寫(子類的virtual可寫可不寫)。重寫同時要求函式的返回引數也相同(不相同會報錯)或者為協同返回型別(子類重寫的函式返回的指標或引用為父類原函式返回的指標或引用的子類)。虛函式的作用是使程式在執行中能夠父類指標去呼叫子類的具體實現,這樣在定義介面時,引數直接用父類指標表示就ok,而不用過載多個介面函式來適應不同子類的呼叫。static方法不能重寫,因為靜態函式不能被定義為虛函式。同時,如果有乙個函式是const函式而乙個不是,也不構成重寫,因為函式形式已不相同,此時會變成子類對父類的重定義。

在繼承行為中,除了虛函式正確使用方式之外,其餘皆為重定義,如父類的乙個非虛函式fun,子類也有乙個非虛函式fun,不管引數是否相同,同名函式皆是重定義。子類重定義父類函式,將會隱藏父類原函式,即在子類中將再也無法呼叫父類的原函式。

根據作用域,virtual,函式引數,做出下面**彙總:

以下是測試**:

#includeusing namespace std;

class parent

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

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

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

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

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

過載 overload 在c 程式中,可以將語義 功能相似的幾個函式用同乙個名字表示,但是函式引數不同,即構成函式過載。1 相同的範圍 在同乙個類或域中 2 函式名稱相同 3 函式引數不同 引數型別 引數個數 引數順序 4 不考慮返回型別 5 不考慮virtual關鍵字 重寫 又叫覆蓋,overri...