複製鏈接
請複製以下鏈接發送給好友

捆綁

(通信術語)

鎖定
捆綁也稱為綁定(binding),為了將對象置於運行狀態,允許調用它所支持的操作。對象可在運行時進行捆綁,也可在編譯時進行捆綁,前者稱為後期綁定或動態綁定,後者稱為靜態綁定
中文名
捆綁
外文名
binding
別    名
綁定
定    義
運行狀態,運行調用支持的操作
分    類
動態綁定和靜態綁定
應用學科
計算機原理

捆綁基本信息

將一個函數調用鏈接上相應的函數體代碼的過程稱為綁定(binding)。靜態綁定(static binding)在編澤時確定,即存編澤時即可確定obj一>func()調用的書是哪一個func()。動態綁定(dynamic binding)則必須到程序運行時才能確定,派生類中重定義了基類的虛函數func()後,指向基類對象的指引obj以obj->func()形式調用的是基類中定義的func()還是派生類垂定義的func()將根據obj運行期間所指向對象的類型決定。函數重載時使用的是靜態綁定,因為編譯程序在編譯時就可根據重載函數的不同參數形式來確定調用哪一個函數體。 [1] 

捆綁設計合適的綁定方式

靜態綁定又稱早期綁定(early binding),這意味着決定哪個版本的函數將被調用的全部信息在程序被編譯時就已知道,諸如c++語言缺省的函數調用方式、重載函數調用、重載運算符調用等都採用靜態綁定方式。靜態綁定方式的主要優點是執行效率高、佔用內存少,其缺點是程序缺乏靈活性。
動態綁定義稱晚期綁定(late binding),它意味着確定調用哪個版本的函數是在程序執行時才決定的。動態綁定通過繼承與虛函數實現,主要優點是允許程序中有更大的靈活性,例如用來支持公共接口並允許程序員利用這些接口定義自己的實現方式,這樣就有利於構造可重用與可擴充的類庫;其缺點是稍微降低了程序執行的效率,並使得程序的動態結構不同於靜態結構,降低了程序的可理解性。
一個指針或引用時所指定的類型被稱為靜態類型,在程序運行期問一個指針或指引時所實際指向或引用的對象的類型被稱為這個指針或引用的動態類型。靜態類型用於編譯程序檢查類型的合法性;動態類型只能是靜態類型的子類型,被運行系統用於動態綁定。儘管動態綁定帶來的效率損失是很小的,也不應該濫用動態綁定。動態綁定應該在明確地提高了程序可重用性與可擴充性的情況下才運用。 [1] 
參考資料
  • 1.    李師賢等編著,面向對象程序設計基礎,高等教育出版社,1998年08月第1版,252-254