1、 重載、覆蓋和隱藏的概念
①覆蓋:覆蓋指的是派生類的虛擬函數覆蓋了基類的同名且參數相同的函數。
②重載:必須在一個域中,函數名稱相同但是函數參數不同,重載的作用就是同一個函數有不同的行為,因此不是在一個域中的函數是無法構成重載的,這是重載的重要特征。
③隱藏:是派生類的成員函數隱藏了基類函數的成員函數,在調用一個類的成員函數的時候,編譯器會沿著類的繼承鏈逐級向上查找函數的定義,如果找到了就停止查找,所以如果一個派生類和一個基類都有同一個同名(暫且不論參數釋放相同)的函數,而編譯器最終選擇了在派生類中的函數,那么我們就說這個派生類的成員函數“隱藏”了基類的成員函數,也就是說它阻止了編譯器繼續向上查找函數的定義。
2、 成員函數被重載的特征
①相同的范圍(在同一類中)
②函數名字相同
③參數不同
④virtual關鍵字可有可無
3、 覆蓋的特征
①不同的范圍(分別位于派生類與基類)
③參數相同
④基類函數必須有virtual關鍵字
4、 “隱藏”的規則
如果派生類的函數與基類的函數同名,但是參數不同。此時,不論有無virtual關鍵字,基類的函數將被隱藏(注意別與重載混淆)。
如果派生類的函數與基類的函數同名,并且參數也相同,但是基類函數沒有virtual關鍵字。此時,基類的函數被隱藏(注意別于覆蓋混淆)。
Copyright @ 煙皚 Powered by: .Text and ASP.NET Theme by: .NET Monster