随笔 - 322  文章 - 0  评论 - 4  阅读 - 77146

C++ 多态 案例(//多态案例----制作饮品 //描述:煮水 冲泡 倒入杯中 加入辅料)

复制代码
  1 //多态案例----制作饮品
  2 //描述:煮水 冲泡 倒入杯中  加入辅料
  3 
  4 #include <iostream>
  5 #include <string>
  6 using namespace std;
  7 
  8 class AbstractDriking
  9 {
 10 public:
 11 
 12     //煮水
 13     virtual void Boil() = 0;
 14 
 15     //冲泡
 16 
 17     virtual void Brew() = 0;
 18 
 19     //倒入杯中
 20     virtual void PourInCup() = 0;
 21 
 22     //加入辅料
 23     virtual void  PutSomething() = 0;
 24 
 25     //制作
 26     void makerDrink()
 27     {
 28         Boil();
 29         Brew();
 30         PourInCup();
 31         PutSomething();
 32     }
 33 };
 34 
 35 //制作咖啡
 36 class Coffee :public AbstractDriking
 37 {
 38 public:
 39     //煮水
 40     virtual void Boil()
 41     {
 42         cout << "煮百岁山水" << endl;
 43     }
 44 
 45     //冲泡
 46 
 47     virtual void Brew()
 48     {
 49         cout << "冲泡咖啡" << endl;
 50     }
 51 
 52     //倒入杯中
 53     virtual void PourInCup()
 54     {
 55         cout << "倒入咖啡杯" << endl;
 56     }
 57 
 58     //加入辅料
 59     virtual void  PutSomething()
 60     {
 61         cout << "加入糖 ,牛奶" << endl;
 62     }
 63 
 64 };
 65 //制作茶
 66 class Tea :public AbstractDriking
 67 {
 68 public:
 69     //煮水
 70     virtual void Boil()
 71     {
 72         cout << "煮农夫山泉水" << endl;
 73     }
 74 
 75     //冲泡
 76 
 77     virtual void Brew()
 78     {
 79         cout << "冲泡茶" << endl;
 80     }
 81 
 82     //倒入杯中
 83     virtual void PourInCup()
 84     {
 85         cout << "倒入茶杯" << endl;
 86     }
 87 
 88     //加入辅料
 89     virtual void  PutSomething()
 90     {
 91         cout << "加入茶叶 ,柠檬" << endl;
 92     }
 93 
 94 };
 95 
 96 //制作函数
 97 void doWork(AbstractDriking* abs)// AbstractDriking*abs = new Coffee
 98 {
 99     abs->makerDrink();
100     delete abs;
101 }
102 void test01()
103 {
104     //制作咖啡
105     cout << "************制作咖啡************" << endl;
106     doWork(new Coffee);
107 
108     //制作茶叶
109     cout << "************制作茶************" << endl;
110     doWork(new Tea);
111 
112 }
113 
114 int main()
115 {
116 
117     test01();
118 
119 
120     system("pause");
121 
122     return 0;
123 
124 }
复制代码

 

posted on   Bytezero!  阅读(46)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示