C 函式覆蓋,過載,隱藏的區別

2021-07-16 18:04:42 字數 353 閱讀 3075

c++中函式的覆蓋,過載和隱藏之間的關係是很令人頭疼的,又是不太容易區分的,現在此總結一下。

範圍的不同:函式的過載發生在類內部,而函式的覆蓋,也叫函式重寫,及函式隱藏發生在類間。也就是說,在同乙個類中只會發生函式的過載,而在子類與父類間會發生覆蓋和隱藏。

宣告方式的不同:在同乙個類中,如果宣告多個函式,只要它們的函式名相同,就會發生過載,而不管它們的引數列表及引數個數是否相同;當子類中存在與父類同名的函式,它們的引數列表個數,引數型別,返回值型別相同並且有virtual關鍵字修飾就會發生函式覆蓋;當子類與父類有同名函式,但引數個數或引數型別不同,此時無論有無virtual關鍵字修飾均會發生函式隱藏。

最後在說一點,函式過載是實現多型的基礎。

函式的過載,覆蓋,隱藏區別

過載 指同一可訪問區內被宣告的幾個具有不同引數列 引數的型別,個數,順序不同 的同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。注意是相同的範圍 同乙個類 函式名相同,引數不同,跟virtual 沒有關係。覆蓋 也翻譯成重寫,指派生類中存在重新定義的函式。其函式名,引數列表,返回值型...

C 中函式覆蓋 隱藏 過載區別

c 在繼承這一節涉及到函式覆蓋 隱藏 過載等,如何區別它們呢?首先函式 覆蓋的條件 1 基類函式必須是虛函式 2 發生覆蓋的兩個函式要分別位於派生類和基類中 3 函式名稱和引數列表完全相同 其次函式隱藏 主要有以下兩種情況 1 派生類的函式和基類函式完全相同 函式名和引數列表相同 只是基類的函式沒有...

c 成員函式的過載 覆蓋 隱藏區別

成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚概念,否則錯誤將防不勝防。過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分...