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

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

#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();}

结果:

在这里插入图片描述

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

相关文章:

  • 机械零件保养3d模拟演示打消客户购买顾虑
  • SpringBoot的自动装配源码分析
  • Linux常用命令——csplit命令
  • React 组件的3大属性: state
  • vscode 上传项目到gitlab
  • [羊城杯 2020] easyphp
  • QT 常用类与组件
  • C#控制台连接Mysql数据库,有配置数据库连接字符串的配置文件
  • PowerBuilder连接SQLITE3
  • Git 基本原理和常用操作
  • 单元测试和集成测试的区别
  • node基础概念
  • ArcGIS Maps SDK for JS(二):MapView简介----创建2D地图
  • 知识图谱推理研究综述9.3
  • 详细介绍c++中的类
  • C语言:扫雷小游戏
  • VScode SSH无法免密登录
  • Spring Cloud--从零开始搭建微服务基础环境【四】
  • FreeRTOS操作系统中,断言输出 Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,766 原因
  • 【Linux】进程间通信与同步
  • SpringBoot 统一功能处理
  • 解决:sh: vite: command not found
  • el-select下拉多选框 el-select 设置默认值不可删除功能
  • Jetsonnano B01 笔记1:基础理解—网络配置—远程连接
  • Ubuntu系统信息查看指南:了解你的操作系统
  • 【STM32】学习笔记-SPI通信
  • 解决vue项目首行报红( ESLint 配置)和新建的vue文件首行报红问题
  • Linux 调试技术 Kprobe
  • 一文了解评估 K8s 原生存储产品需要关注的关键能力
  • linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf