多型性:
c++支援兩種多型性:編譯時多型性,執行時多型性
虛函式:
派生類可以不顯式地用virtual宣告虛函式,這時系統就會用以下規則來判斷派生類的乙個函式成員是不是虛函式(一般習慣於在派生類的函式中也使用virtual關鍵字,以增加程式的可讀性):
該函式是否與基類的虛函式有相同的名稱、引數個數及對應引數型別
該函式是否與基類的虛函式有相同的返回值或者滿足型別相容規則的指標、引用型的返回值
如果從名稱、引數及返回值三個方面檢查之後,派生類的函式滿足上述條件,就會自動確定為虛函式。這時,派生類的虛函式便覆蓋了基類的虛函式
#includeusing namespace std;
class base1
};class base2: public base1
};class derived: public base2
virtual void dis() const
};void fun(base1 *ptr)
int main(void)
/*base1
base2
derived
如果不宣告虛函式,那麼輸出的都是base1
*/
虛函式與多型
前三者為靜態繫結,虛函式為動態繫結 動態繫結 只有通過基類指標或引用呼叫虛函式才能引發動態繫結 虛函式不能被宣告為靜態 include using namespace std class base virtual void fun2 void fun3 class derived public ba...
虛函式與多型
多型性 呼叫同乙個函式名,可以根據需要實現不同的功能。虛函式 可以在程式執行時通過呼叫相同的函式名而實現不同功能的函式稱為虛函式。編譯時的多型性 函式過載 執行時的多型性 虛函式 執行時的多型性是指在程式執行之前,根據函式名和引數無法確定應該呼叫哪乙個函式,必須在程式的執行過程中,根據具體的執 況來...
虛函式與多型
基類的指標 因當建立乙個類的物件時會建立它的父類物件 如下 class animal class human public animal class mm public human animal a new mm 基類的指標指向派生類物件 human h new mm 父類的指標指向子類物件 因父類...