c++多态案例之制作饮品
时间:2022-07-23
本文章向大家介绍c++多态案例之制作饮品,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
制作饮品的过程大致为:煮水、冲泡、倒入杯中、加入调料。
#include<iostream>
using namespace std;
class AbstractDrink {
public:
virtual void Boil() = 0;
virtual void Brew() = 0;
virtual void PourInCup() = 0;
virtual void PutSomething() = 0;
void makeDrink() {
Boil();
Brew();
PourInCup();
PutSomething();
}
};
class Milk:public AbstractDrink {
virtual void Boil() {
cout << "正在煮水" << endl;
}
virtual void Brew() {
cout << "冲泡牛奶" << endl;
}
virtual void PourInCup() {
cout << "倒入杯中" << endl;
}
virtual void PutSomething() {
cout << "加入麦片" << endl;
}
};
class Coffe :public AbstractDrink {
virtual void Boil() {
cout << "正在煮水" << endl;
}
virtual void Brew() {
cout << "冲泡咖啡" << endl;
}
virtual void PourInCup() {
cout << "倒入杯中" << endl;
}
virtual void PutSomething() {
cout << "加入牛奶" << endl;
}
};
void doWork(AbstractDrink * abs) {
abs->makeDrink();
delete abs;
}
void test() {
doWork(new Milk);
cout << "---------------" << endl;
doWork(new Coffe);
}
int main() {
test();
system("pause");
return 0;
}
输出:
- 一个闪回区报警的数据恢复(r11笔记第62天)
- 利用腾讯云COS云对象存储定时远程备份网站
- 分享一个自写的Python远程命令和文件(夹)传输类
- Oracle数据误操作全面恢复实战(r11笔记第78天)
- 远程协助解决异常宕库的问题(r11笔记第75天)
- Nginx-helper纯代码版,文章评论发布自动清理Fastcgi缓存
- MySQL和Oracle行值表达式对比(r11笔记第74天)
- 闪回数据库不是“万金油”(r11笔记第73天)
- 修改Apache的超时设置,解决长连接请求超时问题
- Oracle 12cR2初体验(r11笔记第91天)
- MySQL中的undo截断(r11笔记第89天)
- Linux系统 df 命令显示异常、分区丢失问题解决
- MySQL主从、字典死锁、连接数的Python监控脚本
- MySQL Online DDL(二)(r11笔记第88天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【日志架构】ELK Stack + Kafka 端到端练习
- 极客算法训练笔记(三),链表详细图解,别再逃避了朋友
- 我就感觉到快 —— zsh 和 oh my zsh 冷启动速度优化
- equals和HashCode深入理解(转)
- LeetCode18|排序链表
- LeetCode17|删除链表的节点
- LeetCode16|两数相加
- 12-2 提示符添加颜色及光标移动
- Redux入门实战——todo-list2.0实现
- 29.Python的集合
- 性能分析(4)- iowait 使用率过高案例
- swagger (GO) API文档工具入门
- 流媒体协议RTSP视频平台EasyNVR录像回看列表删除提示日期错误,遇此问题该怎么解决?
- Azure认知服务之表格识别器
- [Go]go语言实战-go版本的supervisord编译安装与运行