關於覆蓋 隱藏 過載 重寫的區別

2021-06-18 00:14:05 字數 887 閱讀 6929

以下列表表示這幾個概念在語言表面上的差別: 

是否父子類

函式引數是否相同

含有virtual

函式同名

覆蓋(又叫重寫、繼承)

override

,目的就是實現多型

隱藏

不相關

隱藏(符合正常的理解)

同乙個類中

不相同

不相干

過載overload

回答兩個問題:一是訪問誰?二是能否訪問?

過載跟物件導向無關,這裡不做進一步解釋。

下面分兩種情況討論:

一、父類指標指向子類物件

(1)      隱藏明確了指標該訪問誰,父類指標實際指向誰就呼叫誰;

(2)      覆蓋體現多型特徵,不確定,子類有就呼叫子類,沒有則呼叫父類。

二、子類指標指向父類物件

如果提示父類不能初始化子類物件,是父類包含的資訊太少了。

(1)       若是用derive*d=dynamic_cast

(&a);強制轉換該基類a,則d獲取到的是null;

(2)所以父類物件必須是指向了子類或是派生類的物件,則d!=null, 可見父類a只是乙個橋梁。問題轉化為上面一的情況。

過載 重寫(覆蓋) 隱藏

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

過載 重寫(覆蓋)和隱藏的區別

過載 重寫 覆蓋 和隱藏的區別 一 過載 過載從overload翻譯過來,是指同一可訪問區內被宣告的幾個具有不同引數列 引數的型別,個數,順序不同 的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。示例 如下 classa 前四個互為過載函式,最後乙個和第乙個不是過載函式。二 隱藏 ...

C 過載 重寫 覆蓋 和隱藏的區別

成員函式過載 overload 的特徵 1 相同的範圍 在同乙個類中 2 函式名相同 3 函式引數個數或者函式引數型別不相同 4 virtual關鍵字可有可無。作用 同一方法,根據傳遞訊息的不同 型別或者個數 產生不同的動作 相同的方法名,實現不同 重寫也叫覆蓋 override 覆蓋是指派生類的函...