多态应用实例--制作饮品
1 #include<iostream> 2 using namespace std; 3 4 class AbstractDrinking 5 { 6 public: // 注意这里不写的话默认是private的 7 // 纯虚函数 8 // 这个类叫抽象类,无法实例化对象,子类必须重写父类中的函数 9 virtual void boil() = 0; 10 virtual void Brew() = 0; 11 virtual void PourIncup() = 0; 12 virtual void Add() = 0; 13 void makeDrink() { 14 boil(); 15 Brew(); 16 PourIncup(); 17 Add(); 18 } 19 }; 20 21 class Coffee : public AbstractDrinking 22 { 23 public: 24 void boil() { 25 cout << "煮水" << endl; 26 } 27 virtual void Brew() { 28 cout << "加咖啡" << endl; 29 } 30 virtual void PourIncup() { 31 cout << "倒水" << endl; 32 } 33 virtual void Add() { 34 cout << "加牛奶" << endl; 35 } 36 37 }; 38 39 class Tea : public AbstractDrinking 40 { 41 public: 42 void boil() { 43 cout << "煮水" << endl; 44 } 45 virtual void Brew() { 46 cout << "加茶叶" << endl; 47 } 48 virtual void PourIncup() { 49 cout << "倒水进杯" << endl; 50 } 51 virtual void Add() { 52 cout << "加点枸杞" << endl; 53 } 54 55 }; 56 void doWork(AbstractDrinking * abs) { 57 abs->makeDrink(); 58 delete abs; // 释放堆区的数据 59 } 60 void test01() { 61 doWork(new Coffee); 62 63 cout << "chaye " << endl; 64 65 doWork(new Tea); 66 } 67 68 69 70 int main() { 71 72 test01(); 73 return 0; 74 }
posted on 2021-01-25 21:18 Love&Share 阅读(72) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~