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 }