C 過載 隱藏和重寫

2021-08-10 23:08:14 字數 1935 閱讀 8041

1.什麼是過載呢?

過載:同乙個作用域,相同函式名,引數列表不同,與返回值是否相同沒有關係,過載又稱靜態多型

過載的作用:減輕程式設計師對函式名的記憶負擔,可讓所有功能相同的函式使用同乙個名字。

引數列表不同可表現在:

(1)引數個數方面

例如:int add(int i,int j);

int add(int i,int j,int k);

(2)引數型別方面

例如:int add(int left,int right);

char add(char left,char right);

(3)引數的次序方面(是《引數型別》的次序,比如是乙個int和乙個char,這樣互換順序可以過載,不能是兩個int交換次序)

例如:int add(int left,char right);

int add(char right,int left);

//引數型別方面

執行環境:vs2013,win10

//引數個數方面

#include#includeusing namespace std;

int add(int i, int j)

int add(int i, int j, int k)

int main()

執行結果:

//引數次序方面

#include#includeusing namespace std;

int add(int left, char right)

int add(char right, int left)

int main()

執行結果:

2、什麼是隱藏呢?

隱藏:又叫同名隱藏,在繼承體系中,基類和派生類有相同的名字的成員,如果使用派生類物件呼叫和基類中同名的成員,會先呼叫派生類自己中的此成員,會把基類中的此成員隱藏。

相同名字的成員:

可以是同名的成員變數或者同名的成員函式,和此變數或此函式的型別無關

例如: 1.在基類中某變數是int型,在派生類中此變數是char型,這樣也會發生同名隱藏

2.在基類中某函式是int型,在派生類中此函式是char型,這樣也會發同名隱藏

如何解決同名隱藏問題?

1.若想訪問基類中的成員或函式,加上《類作用域限定符》就好

2.那就是不要定義相同名字的成員或函式。

3、什麼是重寫呢?

重寫:在繼承體系中,如果基類中有虛函式,在派生類中也有同名的虛函式,並且基類和派生類中同名的虛函式原型相同。

原型相同表現在:

1.返回值相同;

2.函式名形同;

3.引數相同

注:協變和析構函式也可以構成重寫

協變:基類返回基類的指標或引用,派生類返回派生類的指標或引用,不滿足:函式返回值

析構函式:不滿足函式名

重寫 過載和隱藏

重寫 過載和隱藏是經常在開發中用到的知識點,今天我們在這裡來講一下他們三個的區別。零 重寫 所謂重寫,就是在繼承中,子類重新定義父類的方法,這裡需要注意的是 必須在有繼承關係的類中重寫 子類重寫的方法名和引數列表必須與父類的方法名和引數列表一致 父類方法用virtual修飾 子類方法用overrid...

C 的隱藏 重寫 過載和資訊隱藏

賢哲所追求的不是享樂,而是源於痛苦的自由。面試過程中有被問到隱藏的概念。把隱藏答成類的資訊隱藏了,今天被乙個好心的面試官指出來,這裡重新學習一下。include include include using namespace std 過載 1.函式的可見範圍相同。不同cpp檔案的同名函式不構成過載。...

過載 重寫和隱藏

過載 a 相同的範圍 在同乙個類中 b 函式名字相同 c 引數不同 返回型別不足以區分過載函式 d virtual關鍵字可有可無 重寫 實際上就是虛函式動態繫結 a 不同的範圍,分別位於基類和派生類中 b 函式的名字相同 c 引數相同 e 一般情況下返回型別相同 除非返回型別分別為基類指標和派生類指...