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