2010-01-31 33 views
-2

尊敬的先生!C++如何在內部實現動態綁定?


請解釋C++如何實現這種動態綁定,圖形表示對於理解透視圖會更有用。
或建議一個websigt,其中包含圖形表示和關於此主題的完整詳細信息。

+0

@Zia你拉曼:通過http://www.parashift.com/c++-faq-lite/virtual-functions.html。閱讀整個頁面,我敢打賭,閱讀完後你不需要任何圖片展示。 – 2010-01-31 10:08:18

+2

動態綁定是多態性的另一個短語。你已經問過這個問題:http://stackoverflow.com/questions/2171081/how-c-implements-the-polymorphism-internally – avakar 2010-01-31 10:28:52

回答

1

讓我貼some text你,任何投票表示讚賞,:o

[20.2]如何C++實現動態綁定但也靜態類型?

當你有一個指向一個對象的指針時,這個對象可能實際上是一個從指針類派生的類(例如,Vehicle *實際上指向一個Car對象;這稱爲「多態性「)。因此,有兩種類型:指針的(靜態)類型(在這種情況下爲Vehicle)和指向對象(在這種情況下爲Car)的(動態)類型。

靜態類型意味着成員函數調用的合法性在最早可能的時刻被檢查:在編譯時由編譯器檢查。編譯器使用指針的靜態類型來確定成員函數調用是否合法。如果指針的類型可以處理成員函數,那麼指向的對象也可以處理它。例如,如果車輛具有特定的成員功能,當然由於車輛是一種車輛,因此車輛也具有該成員功能。

動態綁定意味着成員函數調用中代碼的地址是在最後可能的時刻確定的:基於運行時對象的動態類型。它被稱爲「動態綁定」,因爲綁定到實際調用的代碼是動態實現的(運行時)。動態綁定是虛擬功能的結果。

+0

C++ FAQ Lite是一個很好的信息來源,並且有關C++細節的答案 – Vargas 2010-08-19 19:30:34