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