类和对象-案例2-制作茶和咖啡

发布时间:2024年01月18日
#include<iostream>
using namespace std;
//多态案例2:制作音频

class abstractDrinking
{
public:
	//注水
	virtual void Boil() = 0;
	//冲泡
	virtual void Brew() = 0;
	//倒入杯中
	virtual void Pour() = 0;
	//加入辅料
	virtual void Putsth() = 0;
	//如果你的函数谜之不能使用virtual,可能是忘记写();

	//制作音
	void makedrink()
	{
		Boil();
		Brew();
		Pour();
		Putsth();
	}
};
class coffee:public abstractDrinking
{
public:
	//注水
	virtual void Boil()
	{
		cout << "煮农夫山泉" << endl;
	}
	//冲泡
	virtual void Brew()
	{
		cout << "冲泡咖啡" << endl;
	}
	//倒入杯中
	virtual void Pour()
	{
		cout << "导入xx杯中" << endl;
	}
	//加入辅料
	virtual void Putsth()
	{
		cout << "加入糖和牛奶" << endl;
	}
};
class tea :public abstractDrinking
{
public:
	//注水
	virtual void Boil()
	{
		cout << "煮泉阳泉" << endl;
	}
	//冲泡
	virtual void Brew()
	{
		cout << "冲泡茶叶" << endl;
	}
	//倒入杯中
	virtual void Pour()
	{
		cout << "导入xx杯中" << endl;
	}
	//加入辅料
	virtual void Putsth()
	{
		cout << "加入柠檬枸杞" << endl;
	}
};
void doWork(abstractDrinking* abs)//形参:abstractDrinking* abs
{
	abs->makedrink();
	delete abs;
}

void test01()
{
	doWork(new coffee);//实参:new coffee.   即:abstractDrinking* abs=new coffee;
}
void test02()
{
	doWork(new tea);
}
int main() {

	test01();

	test02();

	system("pause");

	return 0;
}

想喝咖啡就点咖啡, 想饮茶就点茶, 反正, 都在一台咖啡机上.

也就是说, 接口都一样.

doWork函数, 先指向父类的函数, 父类的函数是虚的, 需要指向子类函数. (先上后下)

abstractDrinking* abs=new coffee;

文章来源:https://blog.csdn.net/HYPERRION/article/details/135621567
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。