成員函式過載(overload)的特徵:
1、相同的範圍(在同乙個類中);
2、函式名相同;
3、函式引數個數或者函式引數型別不相同;
4、virtual關鍵字可有可無。
作用:同一方法,根據傳遞訊息的不同(型別或者個數),產生不同的動作(相同的方法名,實現不同)
重寫也叫覆蓋(override),覆蓋是指派生類的函式覆蓋基類的函式:
1、不同的範圍(分別位於派生類和基類中);
2、函式名相同;
3、函式引數和函式返回值都相同;
4、基類函式必須有virtual關鍵字。
作用:基類指標和引用在呼叫對應方法時,根據所指物件型別實現動態繫結。
隱藏是指派生類的函式遮蔽了與其同名的基類函式:
1、如果派生類的函式與基類的函式同名,但是函式引數或者函式返回值不同。此時,無論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆);。
2、如果派生類的函式與基類的函式同名,並且函式引數和函式返回值都相同,但是基類函式沒有virtual關鍵字。。此時,基類的函式將被隱藏(注意別與覆蓋混淆)。
作用:隱藏進行靜態繫結,取決於呼叫的指標或者應用型別,而非基類指標或者引用指向的物件型別。使用時,隱藏容易產生混淆,應極力避免。
//
// person.h
//#ifndef person_h_included
#define person_h_included
#include class person
;#endif // person_h_included
//
// person.cpp
//#include "person.h"
person::person()
person::~person()
// 過載
void person::add(int x, int y)
void person::add(int x, int y, int z)
void person::add(float x, float y)
// 重寫(覆蓋)
void person::sub(int x, int y)
//
// student.h
//#ifndef student_h_included
#define student_h_included
#include #include "person.h"
class student : public person
;#endif // student_h_included
//
// student.cpp
//#include "student.h"
student::student()
student::~student()
// 重寫(覆蓋)
void student::sub(int x, int y)
//
// main.cpp
//#include #include #include "person.h"
#include "student.h"
int main()
過載 重寫(覆蓋)和隱藏的區別
過載 重寫 覆蓋 和隱藏的區別 一 過載 過載從overload翻譯過來,是指同一可訪問區內被宣告的幾個具有不同引數列 引數的型別,個數,順序不同 的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。示例 如下 classa 前四個互為過載函式,最後乙個和第乙個不是過載函式。二 隱藏 ...
過載 重寫(覆蓋) 隱藏
過載 同一訪問區 如類中 內被宣告的幾個具有 不同引數列 引數的型別,個數,順序不同 的 同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。隱藏 派生類的函式 遮蔽了它繼承的 基類同名函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。重寫 覆蓋 派生類中存在 同基類中函...
C 中過載 重寫(覆蓋)和隱藏的區別
基本概念 過載 是指同一可訪問區內被宣告的幾個具有不同引數列 引數的型別,個數,順序不同 的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。示例 class a 隱藏 是指派生類的函式遮蔽了與其同名的基類函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。示例 incl...