動態(tài)綁定和靜態(tài)綁定

綁定指的是把方法名和對應(yīng)的方法聯(lián)系在一起。什么時候需要綁定呢?

  1. 方法有重載時。因為有多個同名方法,所以根據(jù)參數(shù)列表確定是哪個方法。是為靜態(tài)綁定
  2. 方法有重寫時。子類對父類的方法進(jìn)行了重寫。當(dāng)用父類的指針調(diào)用某個方法時,要確定到底調(diào)用的是哪個類的方法。是為動態(tài)綁定。

要理解,先要說下對象的內(nèi)存模型

對象中有段空間是用來保存類信息的,其中就有函數(shù)表的指針。函數(shù)表是個什么東西?可以理解為在編譯階段類的方法被編譯放在一段內(nèi)存中。而且會生成一個方法表(可以把它理解成一個數(shù)組),表里面依次保存著方法的指針。比如有三個重載的方法,他們在表里的位置為 1,2 ,3。那么在編譯階段就會根據(jù)參數(shù)列表發(fā)生靜態(tài)綁定,比如說綁定到 2。這時編譯器是不管這個 2 是父類的 2,還是子類的 2 的。而子類的方法和父類的同名同參數(shù)列表的方法在方法表中的順序是一樣的。在運行時,從對象的函數(shù)表里去取相應(yīng)的函數(shù)。這時才發(fā)生了最終的綁定,也可以說動態(tài)綁定。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 你不應(yīng)該重新定義一個繼承而來的non-virtual函數(shù)。為繼承而來的virtual函數(shù),重新定義缺省參數(shù)值,也很...
    何幻閱讀 977評論 0 0
  • 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的...
    西木閱讀 30,892評論 33 466
  • 一直以來我們都錯誤的把愛情看得太重,那么既然愛情并非不可或缺,我們該對愛情持一種什么樣的態(tài)度最好呢?徐志摩有一段...
    曼今閱讀 6,032評論 3 6
  • 火耳兒閱讀 241評論 0 0

友情鏈接更多精彩內(nèi)容