-
捆綁
(通信術語)
鎖定
- 中文名
- 捆綁
- 外文名
- binding
- 別 名
- 綁定
- 定 義
- 運行狀態,運行調用支持的操作
- 分 類
- 動態綁定和靜態綁定
- 應用學科
- 計算機原理
捆綁基本信息
將一個函數調用鏈接上相應的函數體代碼的過程稱為綁定(binding)。靜態綁定(static binding)在編澤時確定,即存編澤時即可確定obj一>func()調用的書是哪一個func()。動態綁定(dynamic binding)則必須到程序運行時才能確定,派生類中重定義了基類的虛函數func()後,指向基類對象的指引obj以obj->func()形式調用的是基類中定義的func()還是派生類垂定義的func()將根據obj運行期間所指向對象的類型決定。函數重載時使用的是靜態綁定,因為編譯程序在編譯時就可根據重載函數的不同參數形式來確定調用哪一個函數體。
[1]
捆綁設計合適的綁定方式
靜態綁定又稱早期綁定(early binding),這意味着決定哪個版本的函數將被調用的全部信息在程序被編譯時就已知道,諸如c++語言缺省的函數調用方式、重載函數調用、重載運算符調用等都採用靜態綁定方式。靜態綁定方式的主要優點是執行效率高、佔用內存少,其缺點是程序缺乏靈活性。
動態綁定義稱晚期綁定(late binding),它意味着確定調用哪個版本的函數是在程序執行時才決定的。動態綁定通過繼承與虛函數實現,主要優點是允許程序中有更大的靈活性,例如用來支持公共接口並允許程序員利用這些接口定義自己的實現方式,這樣就有利於構造可重用與可擴充的類庫;其缺點是稍微降低了程序執行的效率,並使得程序的動態結構不同於靜態結構,降低了程序的可理解性。