過載 ,覆蓋 ,隱藏 OOP多型性

2021-04-02 06:52:23 字數 704 閱讀 6829

過載 ,覆蓋 ,隱藏(oop多型性)

#include

using namespace std;

class base

void g(float x)

void h(float x)

};class derived : public base

void g(int x)

void h(float x)

};int main(void)

(1)函式derived::f(float)覆蓋了base::f(float)。

(2)函式derived::g(int)隱藏了base::g(float),而不是過載。

(3)函式derived::h(float)隱藏了base::h(float),而不是覆蓋。

這三個概念都是與oo中的多型有關係的。如果單是區別過載與覆蓋這兩個概念是比較容易的,但是隱藏這一概念卻使問題變得有點複雜了,下面說說它們的區別吧。

過載是指不同的函式使用相同的函式名,但是函式的引數個數或型別不同。呼叫的時候根據函式的引數來區別不同的函式。

覆蓋(也叫重寫)是指在派生類中重新對基類中的虛函式(注意是虛函式)重新實現。即函式名和引數都一樣,只是函式的實現體不一樣。

隱藏是指派生類中的函式把基類中相同名字的函式遮蔽掉了。隱藏與另外兩個概念表面上看來很像,很難區分,其實他們的關鍵區別就是在多型的實現上。什麼叫多型?簡單地說就是乙個介面,多種實現吧。

C 中過載,重寫 覆蓋),隱藏 與 多型性

一 c 過載 即在同乙個類中宣告相同的函式名,但形參列表的引數型別與及引數的數目不同時,應會發生過載。包括函式過載和運算子過載。看個例子 01classa 06 07voidfun inta 08 09voidfun inta,intb 10 11voidfun doubleb 12 13 二 c ...

c 多型性,多型,和過載

多型性分兩個部分 1.靜態多型性 通過過載實現,同名不同參。2.動態多型性 多型,子類覆蓋父類方法,執行時根據指標的型別來決定最終執行的方法。即 虛函式。過載是同名不同參,引數完全一樣順序不同也叫同名不同參。參考 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的...

多型性和過載Overload

1 覆蓋和過載有什麼不同?答 虛函式總是在派生類中被改寫,這種改寫稱為override 覆蓋 override 是指派生類重寫基類的虛函式。重寫的函式必須有一致的參數列和返回值 c 標準允許返回值不同的情況,但是很少有編譯器支援這個特性 overload 約定成俗地被翻譯成過載,是指編寫乙個與已有函...