1、純虛函式是乙個在基類中說明的虛函式,在基類中沒有定義,要求任何派生類都定義自己的版本;
2、純虛函式為各派生類提供乙個公共介面(介面的封裝設計);
3、純虛函式說明形式:virtual 型別 函式名(參數列)= 0 ;
4、乙個具有純虛函式的基類稱為抽象類。
定義乙個抽象類,含有純虛函式類叫做抽象類。
1、如果子類繼承抽象類,只有把所有的純虛函式都實現了,才能例項化。
2、抽象類可以定義普通的函式、變數。
3、介面類(抽象類)中只有函式原型定義,沒有任何資料的定義。
class figure
; class tri : public figure
void show_area() ;
class square : public figure
void show_area() ;
class circle : public figure
void show_area() ;
//通過抽象類的 純虛函式 介面約定 (公共介面的約定)來實現具體的業務模型的填充
//(比繼承**復用更好乙個級別的,屬於框架的設計)
void objshow(figure *pbase)
void main()
{//figure f1; //直接用抽象類定義具體的物件,error
figure *pbase = null; // 抽象類可以定義指標
tri t1;
square s1;
circle c1;
objshow(&t1);
objshow(&s1);
objshow(&c1);
總結:(1)絕大多數物件導向語言都不支援多繼承;
(2)絕大多數物件導向語言都支援介面的概念;
(3)c++中沒有介面的概念;
(4)c++中可以使用純虛函式實現介面;
(5)介面類(抽象類)中只有函式原型定義,沒有任何資料的定義。
(6)抽象類不能例項化(定義物件),但是可以定義抽象類指標(實現多型)。
純虛函式與抽象類
有時我們僅僅想讓基類表示一種抽象的概念,而不與具體的事物相聯絡 如 我在基類中定義乙個多邊形的函式shape 但是我並不想讓它指向某乙個具體的多邊形 三角形呀,四邊形呀 我只想讓它指明多邊形都共有的特徵 都有兩條以上的邊構成,都有角。然後在它的派生類中在對對變形進行具體化 這時便用到了純虛函式 純虛...
純虛函式與抽象類
一 純虛函式 在基類中宣告的虛函式在各派生類中根據實際需要給出各自定義。syntax virtual returntype functionname 參數列 0 宣告為純虛函式後,基類中就可以不再給出函式的實現部分,函式體由派生類給出。在基類中對純虛函式定義的函式體的呼叫,必須通過 基類名 函式名 ...
純虛函式與抽象類
一.純虛函式 virtual 0 形如 class 類名 的虛函式,稱為純虛函式或抽象方法 class shape 純虛函式可以不定義,但如果定義,必須寫在類的外部 void shape draw void const 在基類的構造和析構函式中呼叫純虛函式,結果將是未定義的。通常會在鏈結階段報告失敗...