過載:
a 相同的範圍(在同乙個類中)
b 函式名字相同
c 引數不同(返回型別不足以區分過載函式)
d virtual關鍵字可有可無
重寫:(實際上就是虛函式動態繫結)
a 不同的範圍,分別位於基類和派生類中
b 函式的名字相同
c 引數相同
e 一般情況下返回型別相同(除非返回型別分別為基類指標和派生類指標)
d 基類函式必須有virtual關鍵字
隱藏:a 如果派生類的函式和基類的函式同名,但是引數不同,此時,不管有無virtual,基類的函式被隱藏。
b 如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有vitual關鍵字,此時,基類的函式
要避免隱藏,例如
class base
public:
void func(int);
class derived:public base
public:
//using base::func;
void func();
int main()
derived d;
d.func()//ok,derived::func()
d.func(1)//error,base::func(int)被隱藏
為了讓d.func(1)正確,需要在derived的定義中加入using base::func;
過載 重寫 隱藏
共同點 函式名相同 定義 1 如果在類裡函式名相同但是形參不同,則為過載。形參不同包括形參的型別個數以及順序。2 類間。重寫和隱藏都發生在基類和派生類之間。重寫 覆蓋 發生在派生類和基類之間。必須滿足兩個條件 1 基類有virtual宣告 2 函式名和形參必須完全相同。隱藏 發生在派生類和基類之間,...
過載 重寫(覆蓋) 隱藏
過載 同一訪問區 如類中 內被宣告的幾個具有 不同引數列 引數的型別,個數,順序不同 的 同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。隱藏 派生類的函式 遮蔽了它繼承的 基類同名函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。重寫 覆蓋 派生類中存在 同基類中函...
C 的過載 重寫 隱藏
在同乙個class中 class demo 在同一訪問區內 如在同一.c cpp檔案內 即不在struct或者class中 4個fun都是過載函式 intfun int a void fun double a int fun int a,int b int fun float a 父類 class ...