前三者為靜態繫結,虛函式為動態繫結
動態繫結
只有通過基類指標或引用呼叫虛函式才能引發動態繫結
虛函式不能被宣告為靜態
#include
using
namespace
std;
class base
virtual
void fun2()
void fun3()
};class derived : public base
void fun2()
void fun3()
};int main(void)
析構函式可以宣告為虛函式
建構函式不得是虛函式
析構函式還可以是純虛函式
#include
using
namespace
std;
class base
base()
virtual ~base()
};class derived : public base
derived()
~derived()
};int main(void)
#include
using
namespace
std;
class base
virtual
void fun2()
int data1_;
};class derived : public base
virtual
void fun3()
int data2_;
};typedef
void(*func)();
int main(void)
覆蓋是指派生類函式覆蓋基類函式,特徵是:
重定義(派生類與基類)
純虛函式不需要實現
只要類中含有乙個純虛函式,則該類為抽象類
注意 抽象類不能用於直接建立物件例項,可以宣告抽象類的指標和引用
可使用指向抽象類的指標支援執行時多型性
派生類中必須實現基類中的純虛函式,否則它仍將被看作乙個抽象類
#include
#include
using
namespace
std;
class shape
;class circle :public shape
};class square :public shape
};void drawallshape(const
vector
& v)
}int main(void)
多型性有助於提高程式的可擴充套件性
虛函式與多型
多型性 呼叫同乙個函式名,可以根據需要實現不同的功能。虛函式 可以在程式執行時通過呼叫相同的函式名而實現不同功能的函式稱為虛函式。編譯時的多型性 函式過載 執行時的多型性 虛函式 執行時的多型性是指在程式執行之前,根據函式名和引數無法確定應該呼叫哪乙個函式,必須在程式的執行過程中,根據具體的執 況來...
虛函式與多型
多型性 c 支援兩種多型性 編譯時多型性,執行時多型性 虛函式 派生類可以不顯式地用virtual宣告虛函式,這時系統就會用以下規則來判斷派生類的乙個函式成員是不是虛函式 一般習慣於在派生類的函式中也使用virtual關鍵字,以增加程式的可讀性 該函式是否與基類的虛函式有相同的名稱 引數個數及對應引...
虛函式與多型
基類的指標 因當建立乙個類的物件時會建立它的父類物件 如下 class animal class human public animal class mm public human animal a new mm 基類的指標指向派生類物件 human h new mm 父類的指標指向子類物件 因父類...