動態繫結( dynamic binding)將繫結( binding)(即解析型別、成員和操作的過程從編譯時延遲到執行時。動態繫結適用於那些開發者知道某個特定的函式、成員或操作的存在,而編譯器不知道的情況。這種情況通常出現在操作動態語言(例如 ironpython)和com時。在這些情況下,如果不使用動態繫結就只能使用反射機制了動態型別是通過上下文關鍵字 dynamic宣告的:
dynamic d=
getsomeobject()
;d.quack()
;
動態繫結型別會告訴編譯器「不要緊張」,我們認為d的執行時型別具有乙個 quack方法,但是我們無法靜態的證明這一點。由於d是動態的,所以編譯器推遲到執行時才將quack繫結給d。為了真正理解這個概念,我們需要先區分靜態繫結和動態繫結。 C 中動態繫結和靜態繫結
c 中,非虛函式都是靜態繫結,而虛函式卻是動態繫結。為了能夠更清楚地了解靜態繫結與動態繫結,我們可以看下面這個例子 include using namespace std class b 那麼兩次呼叫fun 函式是否相同呢?當然,如果d中沒有定義fun 函式 如例子中 那麼兩次呼叫的行為肯定會是一樣...
C 中動態繫結和靜態繫結
2009 03 27 15 35 1053人閱讀收藏 舉報c funclass 編譯器c c 中,非虛函式都是靜態繫結,而虛函式卻是動態繫結。為了能夠更清楚地了解靜態繫結與動態繫結,我們可以看下面這個例子 include using namespace std class b 那麼兩次呼叫fun 函...
C 中的動態繫結
c 中基類和派生類遵循型別相容原則 即可用派生類的物件去初始化基類的物件,可用派生類的物件去初始化基類的引用可用派生類物件的位址去初始化基類物件指標。c 中動態繫結條件發生需要滿足2個條件 1 只有指定為虛函式的成員函式才能進行動態繫結,成員函式預設為非虛函式,非虛函式不能進行動態繫結 2 必須通過...