純虛函式與抽象類

2021-08-02 17:44:33 字數 1038 閱讀 1444

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 在基類的構造和析構函式中呼叫純虛函式,結果將是未定義的。通常會在鏈結階段報告失敗...