C 純虛函式與抽象類

2021-09-09 01:32:08 字數 1181 閱讀 7409

5.4.3 純虛函式和抽象類

純虛函式是乙個在基類中說明的虛函式,它在該基類中沒有定義,但是要求在派生類中根據需要對它進行定義,或仍然說明為純虛函式。

宣告純虛函式的一般格式是:

virtual 函式型別 函式名(參數列)=0;

純虛函式的作用是:在基類中為其派生類保留乙個函式的名字,以便派生類根據需要對它進行重新定義。純虛函式沒有函式體,它最後面「=0 」並不表示函式的返回值是0,它只是形式上的作用,告訴編譯系統這是純虛函式。純虛函式不具有函式的功能,不能被呼叫。

//應用舉例

#includeusing

namespace

std;

#define pi 3.14

class circle

virtual

void show()=0; //

在基類裡定義純虛函式

protected

:

double

radius;

};class area:public

circle

};class perimeter:public

circle

};int

main()

程式執行結果:

圓的面積是:314

圓的周長是:62.8

在以上例子中,circle是乙個基類,它表示乙個圓。從它可以派生出面積類area和周長類

perimeter。顯然,基類中定義的show函式是沒有任何意義的,它只是用來提供派生類使用

的公共介面,所以在程式中將其定義為純虛函式,但在派生類中,則根據程式的需要,具體

地重新定義純虛函式。

如果乙個類至少有乙個純虛函式,那麼就稱為這個類為抽象類。因此,上述程式中定義的類

circle就是乙個抽象類。對於抽象類的使用有以下幾點規定:

(1)由於抽象類中至少包含有乙個沒有定義功能的純虛函式,因此抽象類只能用其他類的基類,

不能建立抽象類的物件。

(2)抽象類不能用作引數型別、函式返回型別或顯式轉換的型別。但是可以宣告指向抽象類的

的指標變數,此指標可以指向它的派生類,進而實現多型性。

(3)如果在抽象類的派生類中沒有重新說明純虛函式,則該函式在派生類中仍然為純虛函式,

而這個派生類仍然還是乙個派生類。

C 純虛函式與抽象類

純虛函式 純虛函式 在基類中將某一成員函式定為虛函式,並不是基類本身的需要,而是考慮到派生類的需 要,在基類中預留了乙個函式名,具體功能留給派生類根據需要去定義。純虛函式是在宣告虛函式時被 初始化 為0的函式。一般形式為 virtual 函式型別 函式名 引數列表 0 如 virtual float...

C 純虛函式與抽象類

在很多的情況下,在基類中一般都不能給出虛函式的具體而有意義的定義,這時我們就可以將它說明為純虛函式。它的具體的定義由它的派生類具體完成,這樣可以使類之間的結構更加清晰,同時也更容易理解。含有純虛函式的類叫抽象類。說明純虛函式的一般格式 class 類名 virtual 返回值型別 函式名 引數列表 ...

C 純虛函式與抽象類

參考 純虛函式 是一種特殊的虛函式,是基類中只有宣告,無 法實現 定義的虛函式。含有純虛函式的類稱為 抽象類 ifndef purevir h define purevir h define pi 3.14159 namespace purev 基類為 抽象類 的派生類都必須定義自己的,和純虛函式同...