C 函式覆蓋和隱藏

2021-06-05 08:42:12 字數 891 閱讀 2549

原則:

成員函式被過載的特徵:相同的範圍(在同乙個類中);函式名字相同;引數不同;

覆蓋是指派生類函式覆蓋基類函式,特徵是:不同的範圍(分別位於派生類與基類);函式名字相同;引數相同;基類函式必須有virtual關鍵字。

隱藏分兩種情況:一種是,派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏。另一種是,派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual關鍵字。此時,基類的函式被隱藏。

#include "stdafx.h"

#include

using namespace std;

class base

{public:

virtual void xfn(int i)

{cout<<"base::xfn(int i)"{cout<<"base::yfn(float f)"{cout<<"base::zfn()"{cout<<"drived::xfn(int i)"{cout<<"drived::yfn(int c)"{cout<<"drived::zfn()"base *pb=&d;

derived *pd=&d;

pb->xfn(5);

pd->xfn(5);

pb->yfn(3.14f);

pd->yfn(3.14f);

pb->zfn();

pd->zfn();

getchar();

return 0;

輸出:drived::xfn(int i)

drived::xfn(int i)

base::yfn(float f)

drived::yfn(int c)

base::zfn()

drived::zfn()

C 函式覆蓋和隱藏

一 覆蓋 1.定義 覆蓋是基類和派生類中的,基類函式是虛函式,派生類中重寫此函式,函式名引數都想同,這就會發生覆蓋 為什麼叫覆蓋?因為派生類繼承基類的時候實際上是先拷貝了基類的所有非private的成員,當基類的函式是虛函式的時候,如果重寫此函式,函式名和引數完全相同,此時派生類中的函式會將派生的基...

隱藏和覆蓋 C

我可以給你說說我的理解 我認為隱藏和覆蓋的區別主要體現在 多型上 舉個例子 隱藏和覆蓋 include include using namespace std class a void f class b public a virtual void g int main 結果是 a a b invo...

C 覆蓋和隱藏

class people virtual void getname different params 隱藏規則2 1 函式名相同 引數相同 2 無virtual void getphone same params 覆蓋規則 1 函式名相同 引數相同 2 有virtual virtual void g...