C++:45---多态
一、多態(tài)介紹
面向?qū)ο蟮暮诵乃枷胧嵌鄳B(tài)性,其含義是“多種形式”
概念:在子類覆蓋了父類函數(shù)的情況下,用父類的指針(或引用)調(diào)用子類對象,或者通過父類指針調(diào)用覆蓋函數(shù)的時候(動態(tài)綁定),實際上調(diào)用的是子類的覆蓋版本,這種現(xiàn)象叫做多態(tài)
注意事項:
只有用父類的指針(或引用)調(diào)用子類對象多態(tài)才會產(chǎn)生,非指針/引用不會產(chǎn)生多態(tài)
且只有用父類的指針(或引用)調(diào)用虛函數(shù)才會產(chǎn)生多態(tài),調(diào)用非虛函數(shù)不會產(chǎn)生多態(tài)效果
運行時解析:
當(dāng)我們使用基類的引用或指針調(diào)用基類中定義的一個虛函數(shù)時,我們并不知道該函數(shù)真正作用的對象是什么類型,因為它可能是一個基類的對象也可能是一個派生類的對象
如果該函數(shù)是虛函數(shù),則直到運行時才會決定到底執(zhí)行哪個版本。非虛函數(shù)的調(diào)用在編譯時進(jìn)行綁定的,類似的,通過對象進(jìn)行的函數(shù)(虛函數(shù)或非虛函數(shù))調(diào)用也在編譯時綁定
二、多態(tài)的條件
父子類之間有覆蓋關(guān)系
基類必須通過引用或指針指向子類,然后再調(diào)用虛函數(shù),此時就可以實現(xiàn)多態(tài)
三、演示案例
class A{public://虛函數(shù)virtual void show()const { cout &總結(jié)
以上是生活随笔為你收集整理的C++:45---多态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言: const关键字与指针
- 下一篇: C++:19---重载与模板、模板特例化