純虛函數和抽象類

純虛函數:

純虛函數是一個在基類中說明的虛函數,在基類中沒有定義,要求任何派生類都定義自己的版本
純虛函數爲各派生類提供一個公共的界面(接口的封裝和設計,軟件的模塊功能劃分)
純虛函數說明形式:
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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章