純虛函數:
純虛函數是一個在基類中說明的虛函數,在基類中沒有定義,要求任何派生類都定義自己的版本
純虛函數爲各派生類提供一個公共的界面(接口的封裝和設計,軟件的模塊功能劃分)
純虛函數說明形式:
virtual 類型 函數名(參數表) = 0;
一個具有純虛函數的基類稱爲抽象類
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
class Figure // 抽象類
{
public:
// 提供一個統一的界面(接口) 讓子類必須去實現
virtual void getArea() = 0; // 純類函數
};
class Circle : public Figure
{
public:
Circle(int r)
{
this->r = r;
}
virtual void getArea()
{
cout << "圓形的面積" << 3.14*r*r << endl;
}
private:
int r;
};
class Tri : public Figure
{
public:
Tri(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void getArea()
{
cout << "三角形的面積" << a*b/2 << endl;
}
private:
int a;
int b;
};
class Square : public Figure
{
public:
Square(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void getArea()
{
cout << "四邊形的面積:" << a * b << endl;
}
private:
int a;
int b;
};
void objPlay(Figure *base)
{
base->getArea(); // 這裏會發生多態
}
int main()
{
// Figue f; // 抽象類不能被實例化
// Figure *pF = NULL; // 合法
Circle c1(5);
Tri t1(3, 4);
Square s1(2, 3);
objPlay(&c1);
objPlay(&t1);
objPlay(&s1);
system("pause");
return 0;
}