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 }
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15117244.html