1 #include2 using namespace std; 3 #define vi virtual 4 class abstractdrink{ 5 public: 6 //煮水 7 vi void Boil() = 0; 8 //冲泡 9 vi void Brew() = 0;10 //倒入杯中11 vi void Pourincup() = 0;12 //添加辅料13 vi void Addsomething() = 0;14 void makeDrink()15 {16 Boil();17 Brew();18 Pourincup();19 Addsomething();20 } 21 };22 23 class Coffee:public abstractdrink{24 void Boil() {25 cout << "煮开水" << endl; 26 }27 //冲泡28 void Brew() {29 cout << "冲泡咖啡" << endl; 30 }31 //倒入杯中32 void Pourincup() {33 cout << "倒入杯中" << endl;34 }35 //添加辅料36 void Addsomething(){37 cout << "添加牛奶和糖" << endl; 38 }39 };40 41 class Tea:public abstractdrink{42 void Boil() {43 cout << "煮开水" << endl; 44 }45 //冲泡46 void Brew() {47 cout << "冲泡茶叶" << endl; 48 }49 //倒入杯中50 void Pourincup() {51 cout << "倒入杯中" << endl;52 }53 //添加辅料54 void Addsomething(){55 cout << "添加枸杞" << endl; 56 }57 };58 void dowork(abstractdrink *abs)59 {60 abs->makeDrink();61 delete abs;62 }63 void test()64 {65 dowork(new Coffee);66 cout << "---------->" << endl;67 dowork(new Tea);68 } 69 70 int main()71 {72 test();73 return 0;74 }