函式過載 重寫和覆蓋說明

2021-08-17 13:55:46 字數 786 閱讀 3265

c++中,經常會提起過載、重寫,除此還有覆蓋。對於這些概念,好多人不是很清楚,使用時卻也能分的清楚。然而當別人問起來時,總是說的不明就裡,張冠李戴。為此在這裡說明以下。

1)函式的過載(overload)

在c++程式中,可以將語義、功能相似的幾個函式用同乙個名字表示,但引數不同(包括型別、順序不同),即函式過載。有以下關鍵點:

① 在同乙個類內部

② 函式名字相同;

③ 引數不同;

請注意,過載解析中不考慮返回型別,而且在不同的作用域裡宣告的函式也不算是過載。經常發生在類的繼承中。

2)覆蓋(override)

是指派生類函式覆蓋基類函式,有以下關鍵點:

① 分別位於基類和派生類中;

② 函式名字相同;

③ 引數型別列表以及順序、以及返回值型別相同;

④ 基類函式必須有virtual 關鍵字。

override是在在不同作用域中,多個函式原型完全一樣,而實現卻不同的函式,是c++實現多型的基礎。

3)重寫(overwrite),有時稱函式隱藏

重寫是對基類和子類中,同名函式使用規則的說明。具體如下:

① 函式名相同,引數型別列表不同

此時,不論基類中定義有無virtual關鍵字,基類的函式將被隱藏;

② 函式名相同,引數列表相同,返回值相同,基類定義沒有virtual關鍵字

此時,呼叫基類還是子類的方法,將由指標型別決定。如果物件指標為基類的型別,則呼叫基類的方法;如果為子類的型別,則呼叫子類的方法。注意: 此時與指標指向的物件的型別無關,只與指標本身的定義有關係。

過載 重寫(覆蓋) 隱藏

過載 同一訪問區 如類中 內被宣告的幾個具有 不同引數列 引數的型別,個數,順序不同 的 同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。隱藏 派生類的函式 遮蔽了它繼承的 基類同名函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。重寫 覆蓋 派生類中存在 同基類中函...

C 中過載 重寫 和 覆蓋

一 過載 1 過載示意 2 發生條件 必須發生在乙個類中,函式名相同,引數型別或者個數不同構成過載,與返回型別無關。如 public class name public int getname int usercount 二 重寫 1 示意 重寫 override 指子類修改父類中某個函式的函式體,...

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

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