Cpp 对象模型探索 / 多态的本质
生活随笔
收集整理的這篇文章主要介紹了
Cpp 对象模型探索 / 多态的本质
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
普通成員函數(shù)的調用方式是直接通過編譯期間確定的函數(shù)地址來調用。
多態(tài)是通過查詢對象的虛函數(shù)表來獲取虛函數(shù)的地址。因為像工廠模式這樣,并不能在編譯期間知道基類指向的是哪個子類,也就導致了不能在編譯期間獲取到函數(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位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Cpp 对象模型探索 / 多态的本质的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cpp 对象模型探索 / 类静态成员函数
- 下一篇: C/Cpp / STL / 各个实现版本