原則:
成員函式被過載的特徵:相同的範圍(在同乙個類中);函式名字相同;引數不同;
覆蓋是指派生類函式覆蓋基類函式,特徵是:不同的範圍(分別位於派生類與基類);函式名字相同;引數相同;基類函式必須有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...