參考:
虛函式
比如:virtual void function1();
virtual關鍵字修飾的
成員函式
,就是虛函式。
把基類的成員函式
設為virtual,其
派生類的相應的函式也會自動變為虛函式。 指向
基類的指標在操作它的
多型類物件時,會根據不同的類物件,呼叫其相應的函式,這個函式就是虛函式。
純虛函式
比如:virtual void function1()=0;
含有純虛函式的類稱為
抽象類,它不能生成物件。
如:
//乙個帶有純虛函式的抽象類
class workunit : public runtimeinfo, public reflectobject
; /*job狀態,乙個列舉型別*/
public:
workunit();
virtual ~workunit();
virtual bool onbeginwork() //帶實現的虛函式
virtual void onendwork(){} //空實現的虛函式
virtual int dowork()=0; //純虛函式,使類workunit變為虛類,不能直接生成物件
bool isinterupted(); //普通函式
protected:
std::string m_strname; //該工作單元名
int m_ipriority; //工作單元的優先順序
state m_cstate; //列舉型別變數
}
如果要派生抽象類,而又不定義純虛函式,子類還要保留:
virtual void function1()=0;
//派生自抽象類workunit的抽象類ruler
class ruler: public workunit
//派生自抽象類ruler的抽象類checkrule
class checkrule: public common::ruler
;
純虛函式如果不實現就得加乙個virtual void function1()=0;子類要實現酒吧virtual去掉。
如果純虛函式在子類實現了,那麼子類可以生成物件:
//派生自抽象類checkrule的非抽象類,該類用來檢查「銀行atm的pio點」。
class poibankatm : public checkrule
; };
虛函式與純虛函式
1 基本形式 virtual returntype function 1 虛函式宣告 virtual returntype function 2 0 純虛函式宣告 先講示例吧,再總結結論。2 示例 classanimail 這段 的輸出結果是什麼呢?起初我認為是 animail function 1...
虛函式與純虛函式
1 基本形式 virtual returntype function 1 虛函式宣告 virtual returntype function 2 0 純虛函式宣告 先講示例吧,再總結結論。2 示例 classanimail 這段 的輸出結果是什麼呢?起初我認為是 animail function 1...
虛函式與純虛函式
在c 中虛函式是實現多型的一種機制,核心理念就是通過基類訪問派生類定義的函式。最常見的例子就是如下 class a class b public a int main void 這裡函式foo通過關鍵字virtual宣告為了虛函式,主函式中定義了乙個父類a的指標a,指向乙個子類b,此時再用a去呼叫f...