繼承體系下同名成員函數的三種關係函數
重載spa
C++中函數重載達到的效果:指針
調用函數名相同的函數,根據實參的類型和個數選擇相應的實現函數體執行。對象
函數重載是一種靜態多態,或者稱之爲靜態聯編、靜態綁定、靜態決議,其實都同樣。繼承
重寫/覆蓋作用域
在子類中定義一個與父類中徹底相同的虛函數:變量
C++中函數重寫達到的效果:引用
在子類中重寫了父類的虛函數,則子類對象調用該重寫函數時從子類內部調用,而不是從父類繼承,是一種動態多態。vi
在子類中重寫了父類的虛函數,若是用一個父類指針或引用指向子類對象,那麼該指針調用的是重寫的虛函數,也便是子類的虛函數, 而若是一個父類指針指向父類對象,則調用父類的虛函數。co
重定義/隱藏
指的是在不一樣做用域內,函數名相同,但不構成重寫的則構成重定義。不單單是值類的成員函數,也能夠是類的成員變量。
C++中重定義達到的效果:
若是再父類和子類中有相同名字的成員,子類中會將父類成員隱藏,此時不管在子類內部仍是外部,經過子類成員會對象訪問該成員,訪問到的都是子類同名成員。
若是再子類內部或外部經過子類成員訪問同名成員函數,則須要根據函數調用的規則來調用子類的同名成員函數,不然調用失敗。