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