1. 程式人生 > >重載與覆蓋的差別

重載與覆蓋的差別

函數 調用 重載 style 沒有 詞匯 不同 版本 pop

對於在同一個可訪問區內被聲明的幾個具有不同參數列(參數的類型、個數、順序不同)的同名函數,程序會依據不同的參數列表來確定詳細調用哪個函數。這樣的機制叫重載overload),overlaod不關心函數的返回值。

覆蓋override)是指派生類中存在又一次定義的函數,其函數名、參數列、返回值類型必須同父類的相相應被覆蓋的函數嚴格一致,覆蓋函數和被覆蓋函數僅僅有函數體(花括號裏的部分)不同,當派生類對象調用子類中同名函數時。會自己主動調用子類中的覆蓋版本號,而不是父類中的被覆蓋版本號。

成員函數被重載(overload)的特征例如以下:

(1)同樣的範圍(在同一個類中) ;

(2)函數名稱同樣。

(3)參數不同;

(4)virtualkeyword可有可無。

覆蓋(override)的特征例如以下:

(a)不同的範圍(分別位於派生類和基類之中);

(b)函數名稱同樣;

(c)參數同樣;

(d)基類函數必須有virtualkeyword。

說明:虛函數總是在派生類中被改寫,這樣的改寫叫做“override”.

override是指派生類重寫基類的虛函數。就像某個類中重寫了還有一個類中的某個函數,重寫的函數必須有一致的參數表和返回值。override----一直沒有合適的中文詞匯來相應。翻譯為“覆蓋”更貼切。

overload約定俗成地被翻譯為“重載”,是指編寫一個與已有

函數同名可是參數表不同的函數。比如。一個函數既能夠接受整型數作為參數。也能夠接受浮點數作為參數。

重載不是一種面向對象的編程。而僅僅是一種語法規則。

重載與多態沒有直接關系。

重載與覆蓋的差別