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

2021-06-20 13:47:14 字數 2061 閱讀 6290

一、c++過載

即在同乙個類中宣告相同的函式名,但形參列表的引數型別與及引數的數目不同時,應會發生過載。包括函式過載和運算子過載。看個例子:

01classa;

06

07voidfun(inta){};

08

09voidfun(inta,intb){};

10

11voidfun(doubleb){};

12

13};

二、c++重寫

即基類中宣告為virual的函式,子類繼承相應的virtual函式,但實現了自己的方法。我們就稱為重寫(也稱覆蓋)。子類呼叫同名的函式時,需判斷呼叫的是子類從基類重寫的函式,還是在基類的函式的實現。重寫是c++多型性產生的機制,把基類中帶有virual關鍵字的函式,在子類中實現自己的版本。這叫重寫。注意與隱藏的區別之處。例子:

01classa;

10

11virtualvoidfun()

12

13

18

19};

20

21classb:publica

32

33voidfun()//實現基類的虛函式fun()

34

35

40

41};

42

43intmain()

44

45

三、c++隱藏:

對基類中不存在virual關鍵字的函式,子類繼承後,如果再次定義乙個同名函式(此時注意不是過載),不管定義的同名函式形參列表型別及個數是否相同,基類的同名函式徹底被隱藏(其實還是可以用子類物件呼叫基類隱藏函式的,見下面

)。此時呼叫子類物件中的函式時,就只能呼叫子類中定義的函式(注意此函式並不繼承自基類的同名函式,並不是所謂的重寫)。例子:

01classa

06};

07

08classb :publica

14};

15intmain()

在上列中,用子類物件b呼叫基類隱藏函式是可以實現的: 

過載 重寫(覆蓋) 隱藏

過載 同一訪問區 如類中 內被宣告的幾個具有 不同引數列 引數的型別,個數,順序不同 的 同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。隱藏 派生類的函式 遮蔽了它繼承的 基類同名函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。重寫 覆蓋 派生類中存在 同基類中函...

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

過載 覆蓋 隱藏 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 vo...

C 中的過載 重寫(覆蓋) 隱藏

一 過載 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual關鍵字可有可無。二 重寫 覆蓋是指派生類函式覆蓋基類函式 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual關鍵字。三 隱藏 隱藏 是指派生類的函式遮蔽了與其...