以下列表表示這幾個概念在語言表面上的差別:
是否父子類
函式引數是否相同
含有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 覆蓋是指派生類的函...