純虛函式
是在基類
中宣告的虛函式
,它在基類中沒有定義
,但要求任何派生類(繼承類)
都要定義自己的實現方法
。在基類中實現
純虛函式的方法是在函式原型後加=0
。
定義純虛函式的目的在於,使派生類僅僅只是繼承函式的介面。
virtual
《函式返回型別》 函式名 (參數列) = 0;
//基類base
class base
//虛函式
virtual
void f2(int x)
//純虛函式,將由子類實現
virtual
void f3(int x)=0;
};
在某基類中宣告為virtual
並在乙個或多個派生類
中被重新定義
的成員函式
virtual
《函式返回型別》 函式名 (參數列)
;
實現多型性,通過指向派生類的基類指標或引用,訪問派生類中同名覆蓋成員函式
class a
};
#include
using
namespace
std;
//基類base
class base
//虛函式
virtual
void f2(int x)
//純虛函式,將由子類實現
virtual
void f3(int x)=0;
};
//繼承derived
class derived:public base
//覆蓋base的f2
void f2(int x)
//在子類中被過載,以多型的形式被呼叫,實現base的純虛函式
//a.編譯時多型性:通過過載函式實現
//b 執行時多型性:通過虛函式實現。
void f3(int x)
};
int main(int argc, char **argv)
虛函式和純虛函式
除了繼承外,c 的另乙個優良特性是支援多型,即允許將派生類的物件當作基類的物件使用。如果a是基類,b和c是a的派生類,多態函式test的引數是a的指標。那麼test函式可以引用a b c的物件。示例程式如下 class a void test a a class b public a class c...
虛函式 和 純虛函式
簡單的說,介面 就是該類的public函式。由於在類的外部一般只能通過這些公共函式才能訪問乙個類,所以這些函式就稱為類的介面。雖然乙個類也可以存在public成員資料,但是,一般不要編寫這種能夠直接在類的外部訪問的public資料,因為這樣就使資訊隱藏性受到一定的 破壞 當使用乙個基類的指標指向其乙...
純虛函式和虛函式
首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式。定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。定義乙個函式為純虛函式,才代表函式沒有被實現。定義純虛函式是為了實現乙個介面,起到乙個規範的作用,規範繼承這個類的程式設計師必須實現這個函式。1 簡介 假設我們有下面的類層...