1. 程式人生 > >多態(3)—— 純虛函數和抽象類

多態(3)—— 純虛函數和抽象類

接口類 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)—— 純虛函數和抽象類