多态性(纯虚函数与抽象类)

将一个虚函数初始化为0之后,该函数就变成了纯虚函数。如:

viurtual  double area() = 0;

这个虚函数是无任何的功能,不能直接来调用,因为它是抽象的,只有被子类继承并赋予功能后才可调用。一个类可以有多个纯虚函数,但是只要有一个纯虚函数给类就是抽象类。

抽象类只是一个概念,就如同人类一样,没有任何的功能,人类这个概念不能吃饭,不能睡觉,只有实体的人才可以具有以上的功能。再比如书中所提到的自行车,你是不能骑的,这只是一个概念。下面我们通过一个程序来说明纯虚函数与抽象类的应用。


#include<iostream>
using namespace std;
class shape
{

public:
	virtual double area() = 0;

};

class A :public shape //三角形公有继承
{
protected:
	double h,w;
public:
	A(double H,double W)
	{
		h = H;
		w = W;
	}

	double area()
	{
	
		return h*w/2;
	}



};

class B : public A//长方形共有继承于三角形
{

public:
	B(double H,double W):A(H,W)//构造函数
	{
	
	}

	double area()
	{
	
		return h*w;
	}




};

class C  :public shape //圆的继承与实现
{

protected:
	double radius;
public:
	C(double r)
	{
	
		radius = r;
	}

	double area()
	{
	
		return radius * radius * 3.14;
	}





};




void  main()
{
	shape *s = 0;
	int choice = 0;
	while(choice < 9)
	{
	

		bool quit = false;
		cout<<"(0)退出(1)三角形(2)长方形(3)圆"<<endl;
		cout<<"请选择";
		cin>>choice;
		switch(choice)
		{
		
	case 0:
		quit = true;
		break;
	case 1:
		s = new A(5.0,6.0);
		cout<<"三角形面积"<<s->area()<<endl;
		break;
	case 2:
		s = new B(70.0,80.0);
		cout<<"长方形的面积"<<s->area()<<endl;
		break;
	case 3:
		s = new C(9.0);
		cout<<"圆的面积"<<s->area()<<endl;
		break;
	default:
		cout<<"请输入0到3的数字";
		break;




		}
		if(choice<4 && choice >0 )
			delete s;
		if(quit)
			break;


	
	}


}




程序的执行的结果是:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值