Cpp 对象模型探索 / 多态的本质
生活随笔
收集整理的這篇文章主要介紹了
Cpp 对象模型探索 / 多态的本质
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
普通成員函數(shù)的調(diào)用方式是直接通過編譯期間確定的函數(shù)地址來調(diào)用。
多態(tài)是通過查詢對象的虛函數(shù)表來獲取虛函數(shù)的地址。因為像工廠模式這樣,并不能在編譯期間知道基類指向的是哪個子類,也就導(dǎo)致了不能在編譯期間獲取到函數(shù)的首地址,也就是不能實現(xiàn)動態(tài)綁定。
實際上動態(tài)綁定的實現(xiàn)原理是,在程序執(zhí)行的時候,將子類的虛函數(shù)表地址賦值給基類對象的虛函數(shù)表指針,再通過查詢虛函數(shù)表的方式獲取最新的函數(shù)地址,從而完成了動態(tài)綁定。
?
拓展
上述說明的是動態(tài)多態(tài)。但是也有靜態(tài)多態(tài)的說法,包括函數(shù)重載和函數(shù)模板,即:在編譯期間通過形參類型推斷出函數(shù)地址的方法。
?
(SAW:Game Over!)
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Cpp 对象模型探索 / 多态的本质的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cpp 对象模型探索 / 类静态成员函数
- 下一篇: C/Cpp / STL / 各个实现版本