C 過載 覆蓋和隱藏的區別

2021-08-28 03:19:23 字數 959 閱讀 1133

同一作用域中函式名相同但引數不同(包括引數型別不同,引數個數不同或二者都不同)的函式稱為過載(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 如果派生類的函式與基類的函式同名,但是引數不同。此時,...