1. 程式人生 > >C++學習筆記——虛擬函式

C++學習筆記——虛擬函式

用virtual關鍵字說明的函式是虛擬函式,是實現執行時多型的基礎,C++中的虛擬函式是動態繫結的函式,且必須是非靜態的函式成員,虛擬函式經過派生之後就可以實現執行過程中的多型。

一般成員函式可以是虛擬函式,建構函式不可以是虛擬函式,解構函式可以是虛擬函式。

虛擬函式的宣告格式:

virtual 函式型別 函式名(形參表);

虛擬函式宣告只能出現在類定義的函式原型宣告中,而不能在成員函式實現的時候。

在派生類中可以對基類中的成員函式進行覆蓋。

虛擬函式一般不宣告為行內函數,因為對虛擬函式的呼叫需要動態繫結,而對行內函數的處理是靜態的。

 

 

派生類可以不顯式地用virtual關鍵字宣告虛擬函式,這是系統就會用以下規則來判斷派生類的一個函式成員是不是虛擬函式:

該函式是否與基類的虛擬函式有相同的名稱、引數個數及對應引數型別;

該函式是否與基類的虛擬函式有相同的返回值或者滿足型別相容規則的指標、引用型的返回值;

如果從名稱、引數及返回值三個方面檢查之後,派生類的函式滿足上述條件,就會自動確定為虛擬函式。這時,派生類的虛擬函式便覆蓋了基類的虛擬函式。

派生類中的虛擬函式還會隱藏基類中同名函式的所有形式的其他過載形式。

一般習慣於在派生類的函式中也是用virtual關鍵字,以增加程式的可讀性。