虛函式:在c++語言中,基類必須將它的兩種成員函式區分開來:一種是基類希望派生類進行覆蓋的函式,另一種是基類希望派生類直接繼承不做修改的函式。對於前一種通常被定義為虛函式。
(基類的虛函式在派生類中隱含的也是乙個虛函式,當派生類覆蓋某個虛函式時,該函式在基類中的形參必須與派生類中的形參嚴格匹配)
在c++語言中,當我們使用基類的引用或指標,呼叫乙個虛函式時將發生動態繫結。
基類的引用或指標,既能繫結基類物件,又能繫結派生類物件;
由於編譯階段我們不知道它的動態型別,只有在執行階段根據實參型別來判斷呼叫基類的虛成員函式,還是呼叫派生類的虛成員函式。
通過動態繫結,我們可以通過同一段**,分別處理父類物件和子類物件。
通常情況下,想把引用或指標繫結到乙個物件上,則引用或指標的型別與物件型別一致;
但存在繼承關係的類是乙個重要的例外,我們可以將基類的指標或引用繫結到派生類物件上。
隱含的意義是,當使用基類的引用或指標時,實際上我們不清楚該引用或指標所繫結物件的真實型別,該物件可能是基類物件,也可能是派生類物件。
當使用存在繼承關係的型別時,必須將乙個變數的靜態型別與它表示的物件的動態型別區分開來。
變數的靜態型別,在編譯階段總是已知的,它是變數宣告時的型別;動態型別則是變數表示在記憶體中的物件型別。動態型別直到執行時才可知。
如果變數既不是引用也不是指標,則它的動態型別與靜態型別永遠一致。
C 動態繫結
c 中動態繫結是將乙個過程呼叫與相應 鏈結起來的行為。是指與給定的過程呼叫相關聯的 只有在執行期才可知的一種繫結,他是多型實現的具體形式。c 中,通過基類的引用或指標呼叫虛函式時,發生動態繫結。引用 或指標 既可以指向基類物件也可以指向派生類物件,這一事實是動態繫結的關鍵。用引用 或指標 呼叫的虛函...
c 動態繫結
c 的函式呼叫預設不使用動態繫結。要觸發動態繫結,必須滿足兩個條件 只有指定為虛函式的成員函式才能進行動態繫結 必須通過基類型別的引用或指標進行函式呼叫 因為每個派生類物件中都擁有基類部分,所以可以使用基類型別的指標或引用來引用派生類物件 示例 include include using names...
C 動態繫結
繫結是乙個把過程呼叫和響應呼叫所需要執行的 加以結合的過程。繫結是在編譯時進行的,叫作靜態繫結,也叫做靜態聯編。動態繫結 動態聯編 執行時繫結 則是在執行時進行的,因此,乙個給定的過程呼叫和 的結合直到呼叫發生時才進行。1 在c 語言中,當我們使用基類的引用 或指標 呼叫乙個虛函式時將發生動態繫結,...