純虛函數(shù)和抽象類
概念
純虛函數(shù):沒有函數(shù)體的虛函數(shù)椒袍。
抽象類:包含純虛函數(shù)的類就稱為抽象類碳想。
純虛函數(shù)就是在函數(shù)聲明后面加上
= 0
,不寫函數(shù)體州疾。純虛函數(shù)實際上是不存在的,引入純虛函數(shù)是為了便于實現(xiàn)多態(tài)皇拣。
class A
{
public:
virtual void fun() = 0; // 純虛函數(shù)
}
注意
抽象類不能生成獨立的對象严蓖。
抽象類可以作為基類。
可以定義抽象類的指針或引用氧急,并讓他們指向或引用抽象類的派生類對象颗胡。
獨立的抽象類的對象不存在,但是被包含在派生類對象中的抽象類的對象吩坝,是可以存在的毒姨。
如果一個類從抽象類派生而來,那么當(dāng)且僅當(dāng)它對基類的所有純虛函數(shù)都進行覆蓋并都寫出了函數(shù)體(空的函數(shù)體
{}
也可以)钉寝,它才能成為非抽象類弧呐。在抽象類的成員函數(shù)內(nèi)可以調(diào)用純虛函數(shù),但是在構(gòu)造函數(shù)或析構(gòu)函數(shù)內(nèi)部不能調(diào)用純虛函數(shù)嵌纲。