c++ 多态的

#include 
#include 
using namespace std;

//含有纯虚函数为抽象类,无法实例化
class AbstractDrinking
{
public:
	//煮水
	virtual void Boil() = 0;
	//冲泡
	virtual void Brew() = 0;
	//导入杯子中
	virtual void PourInCup() = 0;
	//加入辅料
	virtual void PutSomething() = 0;
	//制作,子类总会调用子类的具体方法
	void makeDrink()
	{
		Boil();
		Brew();
		PourInCup();
		PutSomething();
	}

};
//制作coffee
class Coffee : public AbstractDrinking
{
public:
	//煮水
	virtual void Boil() 
	{
		cout << "煮制做咖啡的水" << endl;
	
	}
	//冲泡
	virtual void Brew() 
	{
		cout << "冲泡咖啡" << endl;
	}
	//导入杯子中
	virtual void PourInCup()
	{
		cout << "倒水入杯子" << endl;

	}
	//加入辅料
	virtual void PutSomething()
	{
		cout << "加糖" << endl;

	}

};

//制作Tea
class Tea : public AbstractDrinking
{
public:
	//煮水
	virtual void Boil()
	{
		cout << "煮制做茶的水" << endl;

	}
	//冲泡
	virtual void Brew()
	{
		cout << "冲泡茶叶" << endl;
	}
	//导入杯子中
	virtual void PourInCup()
	{
		cout << "倒水入杯子" << endl;

	}
	//加入辅料
	virtual void PutSomething()
	{
		cout << "不加辅料" << endl;

	}

};
void doWork(AbstractDrinking* a)
{
	a->makeDrink();
	delete a;

};
void test()
{
	doWork(new Coffee);
	cout << "--------------" << endl;
	doWork(new Tea);
}

void main()
{
	test();


}

c++ 多态的_第1张图片

你可能感兴趣的:(c/c++,c++,开发语言)