多態(3)—— 純虛函數和抽象類
阿新 • • 發佈:2018-10-26
接口類 rtu 存在 clas people 繼承 寶典 dong spa
1、基本概念
純虛函數是一個在基類中說明的純虛函數,在基類中沒有定義,要求任何派生類都定義自己的版本。
純虛函數為各派生類提供一個公共界面(接口的封裝和設計、軟件的模塊功能劃分)。
純虛函數的語法:
virtual 類型 函數名 (參數表)=0;
一個具有純虛函數的基類稱為抽象類。
1、含有純虛函數的類,稱為抽象基類,不可實例化。即不能創建對象,存在的意義就是被繼承,提供族類的公共接口。
2、純虛函數只有聲明,沒有實現,被“初始化”為0。
3、如果一個類中聲明了純虛函數,而在派生類中沒有對該函數定義,則該函數在派生類中仍然為純虛函數,派生類仍然為純虛函數。
2、抽象類小案例
#include <iostream> using namespace std; class BigBrother//抽象類 { public: virtual void fightpeople() = 0; }; class dongfang:public BigBrother { public: virtual void fightpeople() { cout << "使用了葵花寶典" << endl; } }; class wuyazi :public BigBrother { public:virtual void fightpeople() { cout << "使用了北冥神功" << endl; } }; int main(void) { BigBrother *bigbrother = new dongfang; bigbrother->fightpeople();//使用了葵花寶典 BigBrother *bigbrother = new wuyazi; bigbrother->fightpeople();//使用了北冥神功 return 0; }
3、抽象類在多繼承中的應用
絕大多數面向對象語言都不支持多繼承,絕大多數面向對象語言都支持接口的概念;
C++中沒有接口的概念,C++中可以使用純虛函數實現接口;
接口類中只有函數原型定義,沒有任何數據的定義。
多態(3)—— 純虛函數和抽象類