過載 ,覆蓋 ,隱藏(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 約定成俗地被翻譯成過載,是指編寫乙個與已有函...