覆蓋,重寫,過載,隱藏,多型的區別

2021-06-18 05:07:37 字數 1034 閱讀 2561

簡單解析一下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 重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過...