C++多态的应用--拿水果

题目描述:现在要实现拿水果。水果有很多的种类,比如苹果,香蕉,橘子等等。一般情况下拿水果的方式都是相同的,只有某些水果不一样,比如说现在拿香蕉的方式

就不一样,而拿苹果和橘子的方式相同。未来有更多的水果时,拿新水果的方式一般也与苹果、橘子相同。做一下设计,实现拿水果的接口。

 

#include<iostream>

using namespace std;

class Fruit
{
public:
	virtual void take() = 0;
};

void Fruit::take()
{
	cout << "统一的take方式" << endl;
}

class Apple :public Fruit
{
public:
	virtual void take();
};

void Apple::take()
{
	Fruit::take();   
}

class Oriange :public Fruit
{
public:
	virtual void take();
};

void Oriange::take()
{
	Fruit::take();
}

class Banana :public Fruit
{
public:
	virtual void take();
};

void Banana::take()
{
	cout << "Banana特有的take方式" << endl;
}

class FruitOperator
{
public:
	void take(Fruit* fruit);

};

void FruitOperator::take(Fruit* fruit)
{
	fruit->take();
}


int main()
{
	FruitOperator fruitOperator;

	Fruit* pA = new Apple();
	fruitOperator.take(pA);
	
	Fruit* pO = new Oriange();
	fruitOperator.take(pO);

	Fruit* pB = new Banana();
	fruitOperator.take(pB);

	delete pA;
	pA = nullptr;

	delete pO;
	pO = nullptr;

	delete pB;
	pB = nullptr;

	return 0;
}

  

posted on 2022-02-06 17:00  xcxfury001  阅读(93)  评论(0)    收藏  举报

导航