C 的過載 重寫 隱藏

2021-10-03 16:30:23 字數 1277 閱讀 6930

// 在同乙個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

base

}// 子類

class

derived

:public base

}int

main()

class

base};

class

derive

:public base};

intmain()

範圍區別:重寫和被重寫的函式在不同的類中,過載和被過載的函式在同一類中。

引數區別:重寫與被重寫的函式引數列表一定相同,過載和被過載的函式引數列表一定不同。

virtual的區別:重寫的基類必須要有virtual修飾,過載函式和被過載函式可以被virtual修飾,也可以沒有。

與過載範圍不同:隱藏函式和被隱藏函式在不同類中。

引數的區別:隱藏函式和被隱藏函式引數列表可以相同,也可以不同,但函式名一定同;當引數不同時,無論基類中的函式是否被virtual修飾,基類函式都是被隱藏,而不是被重寫。

class

base

voidg(

float x)

voidh(

float x)};

class

derived

:public base

voidg(

int x)

voidh(

float x)};

intmain

(void

)

函式derived::f(float)覆蓋了base::f(float)。

函式derived::g(int)隱藏了base::g(float),而不是過載。

函式derived::h(float)隱藏了base::h(float),而不是覆蓋。

過載 重寫 隱藏

共同點 函式名相同 定義 1 如果在類裡函式名相同但是形參不同,則為過載。形參不同包括形參的型別個數以及順序。2 類間。重寫和隱藏都發生在基類和派生類之間。重寫 覆蓋 發生在派生類和基類之間。必須滿足兩個條件 1 基類有virtual宣告 2 函式名和形參必須完全相同。隱藏 發生在派生類和基類之間,...

C 函式的過載 重寫 隱藏

過載 1 在同一作用域中。2 函式名相同 引數個數或引數型別不同。3 過載又稱為靜態多型,靜態繫結,靜態決議等。因為要實現過載,所以c 和c的命名方式有所不同。過載主要是為了減輕程式設計師對函式名的記憶負擔,讓所有功能相似的函式使用同一名字。4 任何程式都僅有乙個 main 函式的例項。main 函...

過載 重寫(覆蓋) 隱藏

過載 同一訪問區 如類中 內被宣告的幾個具有 不同引數列 引數的型別,個數,順序不同 的 同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。隱藏 派生類的函式 遮蔽了它繼承的 基類同名函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。重寫 覆蓋 派生類中存在 同基類中函...