当前位置: 首页 > news >正文

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;
}

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

http://www.lryc.cn/news/415946.html

相关文章:

  • 内网域森林之ProxyNotShell漏洞利用
  • SpringBoot基础 第一天
  • 【C/C++】C语言和C++实现Stack(栈)对比
  • mysql定时备份脚本
  • 云原生 (1)
  • gitlab-pages创建静态站点
  • Python爬虫技术 案例集锦
  • 实战OpenCV之环境安装与配置
  • Android应用开发面试之Jetpack面试题分析汇总
  • 【数据结构】栈的概念、结构和实现详解
  • LeetCode 每日一题 2024/7/29-2024/8/4
  • Golang死锁vs操作系统死锁
  • c/c++中π怎么定义
  • 基于whisper流式语音识别
  • Web3 市场暴跌的时候,哪些token跌的少,哪些还涨了? binance 数据爬取及分析
  • ffmpeg获得视频的音频文件
  • Robot Operating System——深度解析单线程执行器(SingleThreadedExecutor)执行逻辑
  • 【TS】使用npm全局安装typescript
  • 安全用户角色权限
  • 代理模式学习
  • 深入理解Go 语言信号量 Semaphore
  • VisualStudio2019下载与安装
  • 李宏毅老师机器学习常见英语词汇
  • 人工智能时代,程序员如何保持核心竞争力?
  • WiFi to Ethernet: 树莓派共享无线连接至有线网口,自动通过Captive Poartal网页登录认证
  • 【神软大数据治理平台-高级动态SQL(接口开发)】
  • 【Java数据结构】Map和Set超详细两万字讲解(内含搜索树+哈希表)
  • 中国制造2025,会抛弃精益生产吗?
  • Rust 循环
  • 数据结构(其四)--特殊矩阵的存储