過載 重寫和隱藏

2022-08-04 07:09:14 字數 714 閱讀 3981

過載:

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 ...