在平時工做中,有時老被這些搞混亂,所以仍是記錄下來,之後方便檢查。ide
C++:函數
Overload(重載):在C++程序中,能夠將語義、功能類似的幾個函數用同一個名字表示,但參數或返回值不一樣(包括類型、順序不一樣),即函數重載。
(1)相同的範圍(在同一個類中);
(2)函數名字相同;
(3)參數不一樣;
(4)virtual 關鍵字無關緊要。繼承
Override(覆蓋):是指派生類函數覆蓋基類函數,特徵是:
(1)不一樣的範圍(分別位於派生類與基類);
(2)函數名字相同;
(3)參數相同;
(4)基類函數必須有virtual 關鍵字。it
Overwrite(重寫):是指派生類的函數屏蔽了與其同名的基類函數,規則以下:
(1)若是派生類的函數與基類的函數同名,可是參數不一樣。此時,不論有無virtual
關鍵字,基類的函數將被隱藏(注意別與重載混淆)。
(2)若是派生類的函數與基類的函數同名,而且參數也相同,可是基類函數沒有virtual
關鍵字。此時,基類的函數被隱藏(注意別與覆蓋混淆)。程序
特別注意vi
若是基類有某個函數的多個重載(overload)版本,而你在子類中重寫(overwrite)了其中的一個,或是子類添加新的函數版本,則全部基類的重載版本都被遮蔽。因此,正常狀況下,在子類中應重寫基類中的全部重載版本。工作
具體地講,繼承類中的重載和重寫都包含了重寫的涵義,即只要函數名同樣,基類的函數版本就會被遮蔽,因此,在派生類中要保持基類的重載版本,就應該重寫全部基類的重載版本。重載只在噹噹前類中有效,繼承會失去重載的特性。也就是說,把基類的重載函數放在繼承類裏,就必須重寫。版本
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。去重