1.多型性,就相當於乙個函式名(在基類和派生類中),多種意思表達;也可以是介面相同,實現方式不同。
過載函式就是多型性的一種體現。
2.虛函式,前面加關鍵字virtual的成員函式就是虛函式。這是實現多型的前提,然後用指標呼叫派生類不同實現版本
基類指標只可以訪問派生類從基類中繼承下來的成員
以乙個例子為例:
#include
using namespace std;
class base
void show()
可是執行結果都只是輸出1
如果加以改變,在基類的show函式前面冠以virtual,結果就會如我們所想
需要注意的是
ø虛函式必須是類的成員函式,就像上面的例子中base類中的virtual void show(){}
ø不能將友元說明為虛函式,但虛函式可以是另乙個類的友元
ø析構函式可以是虛函式,但建構函式不能是虛函式
ø在派生類中過載基類的虛函式要求函式名、返回型別、引數個數、
引數型別和順序完全相同
3.虛析構函式
普通基類和派生類析構函式呼叫情況是
基類析構函式前冠以voirtual後
一般通過
基類指標訪問虛函式
時才能體現
多型性;
例如上課時的乙個例子
#include
using namespace std;
class a
virtual void
show_area
() = 0 ;
/* 在基類中,並不寫函式原型,只定義,格式為 virtual +返回值型別+函式名+=0;
在後面的各個派生類中,定義不同的內容,實現不同的功能。
*/ };
class ******** : public figure
; class square : public figure
; class circle : public figure
};
虛函式與多型
前三者為靜態繫結,虛函式為動態繫結 動態繫結 只有通過基類指標或引用呼叫虛函式才能引發動態繫結 虛函式不能被宣告為靜態 include using namespace std class base virtual void fun2 void fun3 class derived public ba...
虛函式與多型
多型性 呼叫同乙個函式名,可以根據需要實現不同的功能。虛函式 可以在程式執行時通過呼叫相同的函式名而實現不同功能的函式稱為虛函式。編譯時的多型性 函式過載 執行時的多型性 虛函式 執行時的多型性是指在程式執行之前,根據函式名和引數無法確定應該呼叫哪乙個函式,必須在程式的執行過程中,根據具體的執 況來...
虛函式與多型
多型性 c 支援兩種多型性 編譯時多型性,執行時多型性 虛函式 派生類可以不顯式地用virtual宣告虛函式,這時系統就會用以下規則來判斷派生類的乙個函式成員是不是虛函式 一般習慣於在派生類的函式中也使用virtual關鍵字,以增加程式的可讀性 該函式是否與基類的虛函式有相同的名稱 引數個數及對應引...