首先学习纯虚函数的概念
然后
#include <iostream>
using namespace std;
#include <string>
//制作饮品捏
class AbstractMakeDrink {
public:
//煮水
virtual void Boil() = 0; //纯虚函数
//冲泡
virtual void Brew() = 0;
//倒入杯中
virtual void PourInCup() = 0;
//加入辅料
virtual void PutSomething() = 0;
//制作饮品
void makeDrink() {
//调用上述四个函数
Boil();
Brew();
PourInCup();
PutSomething();
}
};
//制作coffee
class MakeCoffee:public AbstractMakeDrink {
public:
//煮水
virtual void Boil() {
cout << "煮农夫山泉" << endl;
}
//冲泡
virtual void Brew() {
cout << "冲泡咖啡" << endl;
}
//倒入杯中
virtual void PourInCup() {
cout << "倒入杯中" << endl;
}
//加入辅料
virtual void PutSomething() {
cout << "加入糖和牛奶" << endl;
}
//制作饮品
void makeDrink() {
//调用上述四个函数
Boil();
Brew();
PourInCup();
PutSomething();
}
};
//制作茶
class MakeTea :public AbstractMakeDrink {
public:
//煮水
virtual void Boil() {
cout << "煮矿泉水" << endl;
}
//冲泡
virtual void Brew() {
cout << "冲泡茶叶" << endl;
}
//倒入杯中
virtual void PourInCup() {
cout << "倒入杯中" << endl;
}
//加入辅料
virtual void PutSomething() {
cout << "加入枸杞" << endl;
}
//制作饮品
void makeDrink() {
//调用上述四个函数
Boil();
Brew();
PourInCup();
PutSomething();
}
};
//制作函数
void doWork(AbstractMakeDrink* abs) {
abs->makeDrink();
delete abs; //防止内存泄漏
}
//在此处释放
//对这里的函数进行测试
void test01() {
//制作咖啡
doWork(new MakeCoffee);
cout << "-----------------" << endl;
//制作茶叶
doWork(new MakeTea);
}
int main() {
test01();
}
注意这里的制作函数:调用和delete都封在这里
//制作函数
void doWork(AbstractMakeDrink* abs) {
abs->makeDrink();
delete abs; //防止内存泄漏
}
不知道为什么将int main()的程序拆分为两份,写在了test01()里后又调用
void test01() {
//制作咖啡
doWork(new MakeCoffee);
cout << "-----------------" << endl;
//制作茶叶
doWork(new MakeTea);
}
int main() {
test01();
}
结果: