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 一般情況下返回型別相同 除非返回型別分別為基類指標和派生類指...