欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > C++——多态经典案例(二)制作饮品

C++——多态经典案例(二)制作饮品

2024/10/24 12:32:52 来源:https://blog.csdn.net/qq_41264055/article/details/140936592  浏览:    关键词:C++——多态经典案例(二)制作饮品

案例:制作饮品的步骤是差不多一样的,假设都有四步,打开包装Open、煮水Boil、放杯子里面PutInCup、放佐料PutSomething、喝Drink
利用多态,制作茶和咖啡等饮品

分析:定义一个抽象类,纯虚函数包括Open、Boil、PutInCup、PutSomething和Drink
茶和咖啡等饮品类去继承这个抽象类,并实现上述的纯虚函数
通过父类指针指向子类对象进行调用即可

#include<iostream>
class AbstractMakeDrinking 
{
public:virtual void Open() = 0;//打开包装virtual void Boil() = 0;//煮开水virtual void PutInCup() = 0;//放到杯子里面virtual void PutSomething() = 0;//放调料virtual void Drink() = 0;//喝饮料void makeDrink() {Open();Boil();PutInCup();PutSomething();Drink();}
};class Tea :public AbstractMakeDrinking 
{void Open() {std::cout << "Open tea..." << std::endl;}void Boil() {std::cout << "Boil water..." << std::endl;}void PutInCup() {std::cout << "Put tea in cup..." << std::endl;}void PutSomething() {std::cout << "Put milk in cup..." << std::endl;}void Drink() {std::cout << "Drink tea..." << std::endl;}
};class Coffea :public AbstractMakeDrinking
{void Open(){std::cout << "Open Coffea..." << std::endl;}void Boil(){std::cout << "Boil milk..." << std::endl;}void PutInCup(){std::cout << "Put Coffea in cup..." << std::endl;}void PutSomething(){std::cout << "Put sugar in cup..." << std::endl;}void Drink(){std::cout << "Drink Coffea..." << std::endl;}
};void doWork(AbstractMakeDrinking *makedrink) //AbstractMakeDrinking *makedrink = new xxx  父类指针makedrink指向子类对象xxx
{makedrink->makeDrink();delete makedrink;}int main(int argc,char ** agrv) 
{Tea *tea = new Tea;doWork(tea);std::cout << "-------------------" << std::endl;doWork(new Coffea);return 0;
}

运行效果:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com