過載 覆蓋 隱藏

2021-05-23 01:04:35 字數 603 閱讀 9574

學習c++些許時間了,隨便寫點東西吧。 過載/覆蓋/隱藏

1.過載

相同作用域,函式名相同,引數不同,virtual關鍵字可有可無。

2.覆蓋

不同作用域,函式名相同,引數相同,有virtual關鍵字。

3.隱藏

一般是父類和子類之間,函式名相同,引數不同時,不管有沒有virtual關鍵字都會導致隱藏。

函式名相同,引數相同,基類沒有virtual關鍵字的時候也發生隱藏。

例如class base

public:

void fun(int nindex);

class child: public base

public:

void fun(int nindex, int input);

int main(int argc, char * argv)

child objchild;

objchild.fun(0);     //編譯的時候就會報錯,因為發生了隱藏

return 0;

還有乙個c++中子類父類同名函式的呼叫的規律總結:

如果是非虛函式,與呼叫指標關聯。

如果是虛函式,與指標所指物件關聯。

覆蓋,隱藏,過載

1.過載 覆蓋與隱藏 1 過載 成員函式具有以下的特徵時發生 過載 a 相同的範圍 同乙個類中 b 函式的名字相同 c 引數型別不同 不能進行隱式型別轉換 d virtual關鍵字可有可無 2 覆蓋 也叫 繼承 指派生類函式覆蓋基類函式,特徵是 a 不同的範圍 分別位於基類與派生類中 b 函式名字相...

覆蓋,過載,隱藏

覆蓋 重寫 過載,隱藏這三者的概念很容易混淆,弄清楚這三者的區別與聯絡是有必要的.覆蓋 重寫 override,過載 overload,多型 polymorphis函式名字相同 引數不相同 引數個數或引數型別不同 相同作用域 virtual關鍵是可有可無 函式名字相同 引數相同 引數個數和引數型別都...

過載,覆蓋,隱藏

過載產生於乙個類,實現不同定義,統一介面。覆蓋產生與多個類,實現多型概念。隱藏多產生於繼承或者派生,屬於命名空間作用域範疇。當乙個類呼叫存在多重繼承時,呼叫函式和變數時 首先訪問自己的作用域,在自己作用域不存在,訪問父類,還不存在繼續向上查詢,直到全域性命名空間 注意命名空間指名稱,不包括引數,返回...