重載與覆蓋的差別
阿新 • • 發佈:2017-06-17
函數 調用 重載 style 沒有 詞匯 不同 版本 pop
函數同名可是參數表不同的函數。比如。一個函數既能夠接受整型數作為參數。也能夠接受浮點數作為參數。
對於在同一個可訪問區內被聲明的幾個具有不同參數列(參數的類型、個數、順序不同)的同名函數,程序會依據不同的參數列表來確定詳細調用哪個函數。這樣的機制叫重載(overload),overlaod不關心函數的返回值。
覆蓋(override)是指派生類中存在又一次定義的函數,其函數名、參數列、返回值類型必須同父類的相相應被覆蓋的函數嚴格一致,覆蓋函數和被覆蓋函數僅僅有函數體(花括號裏的部分)不同,當派生類對象調用子類中同名函數時。會自己主動調用子類中的覆蓋版本號,而不是父類中的被覆蓋版本號。
成員函數被重載(overload)的特征例如以下:
(1)同樣的範圍(在同一個類中) ;
(2)函數名稱同樣。
(3)參數不同;
(4)virtualkeyword可有可無。
覆蓋(override)的特征例如以下:
(a)不同的範圍(分別位於派生類和基類之中);
(b)函數名稱同樣;
(c)參數同樣;
(d)基類函數必須有virtualkeyword。
說明:虛函數總是在派生類中被改寫,這樣的改寫叫做“override”.
override是指派生類重寫基類的虛函數。就像某個類中重寫了還有一個類中的某個函數,重寫的函數必須有一致的參數表和返回值。override----一直沒有合適的中文詞匯來相應。翻譯為“覆蓋”更貼切。
overload約定俗成地被翻譯為“重載”,是指編寫一個與已有
重載不是一種面向對象的編程。而僅僅是一種語法規則。
重載與多態沒有直接關系。
重載與覆蓋的差別