在同一作用域中函式名相同但引數不同(包括引數型別不同,引數個數不同或二者都不同)的函式稱為過載(overload)函式。
void print(const char *ch);
void print(int a);
void print(int a, int b);
print("hello world");//呼叫print(const char *ch)
print(1);//呼叫print(int a);
print(13,32);//呼叫void print(int a, int b);
注意:main函式不能過載;函式是否過載與返回型別無關
派生類中的成員函式與基類中的visual成員函式同名同引數,則派生類中的函式覆蓋了基類中的成員函式。
#include class base
void f(float x)
virtual void g(void)
}; class derived : public base };
int main()
過載
覆蓋作用域相同,在同一類中
作用域不同,在基類和派生類之間
跟是否是虛函式無關
基類函式必須是visual
引數不同
引數相同
「隱藏」是指派生類的函式遮蔽了與其同名的基類函式,規則如下:
如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無 virtual關鍵字,基類的函式將被隱藏;
如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有 virtual關鍵字。此時,基類的函式被隱藏。
在下面的例項中:
C 過載 覆蓋和隱藏的區別
1 過載 覆蓋和隱藏的概念 覆蓋 覆蓋指的是派生類的虛函式覆蓋了基類的同名且引數相同的函式。過載 必須在乙個域中,函式名稱相同但是函式引數不同,過載的作用就是同乙個函式有不同的行為,因此不是在乙個域中的函式是無法構成過載的,這是過載的重要特徵。隱藏 是派生類的成員函式隱藏了基類函式的成員函式,在呼叫...
過載 覆蓋和隱藏區別
a.成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。b.覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual 關鍵字。c.隱藏 是指派生類...
C 過載 覆蓋 隱藏的區別
1 相同的範圍 在同乙個類中 2 函式名相同 3 引數不同 4 virtual關鍵字可有可無 5 與返回值型別無關 1 不同的範圍 基類和派生類中 2 函式名相同 3 引數相同 4 基類函式必須有virtual關鍵字 5 返回值型別必須相同 1 如果派生類的函式與基類的函式同名,但是引數不同。此時,...