重載、重寫(覆蓋)和隱藏
1. 重載(overload)
是指同一可訪問區(qū)內(nèi)聲明的幾個具有不同參數(shù)列表(參數(shù)的類型,個數(shù),順序不同)的同名函數(shù),根據(jù)參數(shù)列表確定調(diào)用哪個函數(shù),重載不關(guān)心函數(shù)返回類型。重載和被重載的函數(shù)發(fā)生在同一類中,可以被virtual修飾,也可以沒有,其參數(shù)列表一定不同。
2.?隱藏
是指派生類的函數(shù)屏蔽了與其同名的基類函數(shù),注意只要同名函數(shù),不管參數(shù)列表是否相同,基類函數(shù)都會被隱藏。通過作用域分辨符::可以訪問到父類中被隱藏的函數(shù)。隱藏函數(shù)和被隱藏函數(shù)發(fā)生在不同類中,參數(shù)列表可以相同,也可以不同,但函數(shù)名一定同,當(dāng)參數(shù)不同時,無論基類中的函數(shù)是否被virtual修飾,基類函數(shù)都是被隱藏,而不是被重寫。
說明:pd和fd都是根據(jù)指針類型(靜態(tài)綁定)去訪問代碼段的,而不是根據(jù)指針?biāo)赶虻膶?shí)際對象去訪問函數(shù)地址的。
3.?重寫(覆蓋)
發(fā)生多態(tài)的前提。是指派生類中存在重新定義的函數(shù)。其函數(shù)名,參數(shù)列表,返回值類型,所有都必須同基類中被重寫的函數(shù)一致,只有函數(shù)體不同(花括號內(nèi))。重寫和被重寫的函數(shù)在不同的類中,參數(shù)列表一定相同,重寫的基類必須要有virtual修飾,實(shí)際調(diào)用哪一個函數(shù)只依賴于對象的真實(shí)類型。
標(biāo)簽: