簡單解析一下oop程式設計中常常讓人困惑的幾個名詞。
覆蓋,重寫,過載,隱藏,多型
首先,覆蓋也稱重寫,英文override
特點:1. 指不同作用域中(派生類和基類)同名函式的定義
2. 函式名、引數均完全相同
3. 基類對應方法前有 virtual,即被宣告為虛函式
作用:基類指標和引用在呼叫對應方法時,根據所指物件型別實現動態繫結。
其次,過載(overload)
特點:1. 作用域,同一類中
2. 函式名相同,但是引數型別、個數等不完全相同
作用:同一方法,根據傳遞訊息的不同(型別或個數),產生不同的動作(相同方法名,實現不同)。
隱藏(遮蔽)
特點:不同作用域,基類和派生之間
分兩種情形:
一、 基類和派生類函式名相同,但是引數列表不同,不同有無virtual,基類函式在派生類中被隱藏,派生類只能呼叫新的方法,不能呼叫已被隱藏的基類方法(不同於過載,作用域不同)
二、 基類與派生類同名,同參,但基類函式無virtual,同樣派生類中同樣隱藏基類的同名同參函式(不同於覆蓋,無virtual)
示例
#include using namespace std;
class base
分析:覆蓋進行動態繫結,根據基類指標或引用指向的物件型別,呼叫相應的方法
隱藏進行靜態繫結,取決於 呼叫的指標或應用型別,而非 基類指標或引用指向的物件型別
使用時,隱藏以產生混淆,應極力避免。 多型
指oop程式設計中的一種表現特性。相同訊息,作用於同一方法(只是函式名相同),產生的結果不同。
表現方法有 過載,實現介面與繼承
過載中表現為有一物件呼叫同乙個函式名(如add),根據傳遞引數(訊息)的不同(如分別為int或float型別),呼叫不同的方法實現產生不同的結果。
繼承中表現為不同層面中(派生類和基類),對同一函式(同名同參)的呼叫產生同的結果。
覆蓋,重寫,過載,隱藏,多型的區別
簡單解析一下oop程式設計中常常讓人困惑的幾個名詞。覆蓋,重寫,過載,隱藏,多型 首先,覆蓋也稱重寫,英文override 特點 1.指不同作用域中 派生類和基類 同名函式的定義 2.函式名 引數均完全相同 3.基類對應方法前有 virtual,即被宣告為虛函式 作用 基類指標和引用在呼叫對應方法時...
c 多型 重寫 覆蓋 隱藏 過載
多型 重寫 覆蓋 c 中多型是指同乙個操作作用於不同的物件可以有不同的解釋,產生不同的執行結果,多型是通過虛函式實現的,在派生類中重寫基類的虛函式。呼叫方法 宣告基類的指標,利用該指標指向派生類物件,就可以用該指標呼叫派生類中重寫後的虛函式。這樣就可以根據指向的派生類不同,而實現不同的方法。多型的特...
重寫 覆蓋 過載 多型的區別
override 重寫 覆蓋 overload 過載 polymorphism 多型 override是重寫 覆蓋 了乙個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫 重新實現 父類中的方法。重寫 覆蓋 的規則 1 重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過...