C++多态案例2----制作饮品

cpp 复制代码
#include<iostream>
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();

	}

};


//制作咖啡
class Coffee :public AbstractDrinking
{
	//重写父类的虚函数
public:
	virtual void Boil()
	{
		cout << "煮矿泉水" << endl;
	}
	virtual void Brew()
	{
		cout << "冲泡咖啡" << endl;
	
	}
	virtual void PourInCup()
	{
	
		cout << "倒入杯中1" << endl;
	}
	virtual void PutSomething()
	{

		cout << "加入糖和牛奶" << endl;
	}


};



//制作茶叶
class Tea :public AbstractDrinking
{
	//重写父类的虚函数
public:
	virtual void Boil()
	{
		cout << "煮泰山泉水" << endl;
	}
	virtual void Brew()
	{
		cout << "冲泡茶叶" << endl;

	}
	virtual void PourInCup()
	{

		cout << "倒入杯中2" << endl;
	}
	virtual void PutSomething()
	{

		cout << "加入枸杞" << endl;
	}


};


void doWork(AbstractDrinking *drink)//使用父类指针指向子类对象   AbstractDrinking *drink=new Coffee
{

	drink->makeDrink();

	delete drink;//释放
}

void testDoWork()
{


	doWork(new Coffee);

	//一个接口多种形态
	cout << "-------------------" << endl;
	doWork(new Tea);
}


int main()
{


	testDoWork();



}

结果:

相关推荐
CSDN_RTKLIB13 小时前
【四个场景测试】源文件编码UTF-8 BOM
c++
肉包_51113 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
Trouvaille ~14 小时前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
HellowAmy14 小时前
我的C++规范 - 线程池
开发语言·c++·代码规范
czy878747514 小时前
const 在 C/C++ 中的全面用法(C/C++ 差异+核心场景+实战示例)
c语言·开发语言·c++
十五年专注C++开发14 小时前
MinHook:Windows 平台下轻量级、高性能的钩子库
c++·windows·钩子技术·minhook
一只小小的芙厨15 小时前
寒假集训笔记·树上背包
c++·笔记·算法·动态规划
以卿a15 小时前
C++(继承)
开发语言·c++·算法
czxyvX16 小时前
017-AVL树(C++实现)
开发语言·数据结构·c++
你真是饿了16 小时前
1.C++入门基础
开发语言·c++