当前位置:网站首页>多态案例2 制作饮品
多态案例2 制作饮品
2022-08-08 07:59:00 【老鱼37】
//多态案例---制作饮品
//制作饮品的步骤有
//1.煮水 2.冲泡 3.加入 4.加入辅料
class Base
{
public:
//煮水
virtual void BoilWater() = 0;
//冲泡
virtual void Brew() = 0;
//放入茶、咖啡
virtual void Put() = 0;
//放入作料
virtual void Seasoning() = 0;
//制作饮品 --调用上述的接口
void MakeDrinks()
{
BoilWater();
Brew();
Put();
Seasoning();
}
};
//创建Coffee类
class Coffee:public Base
{
public:
//父类是抽象类,父类中的纯虚函数,子类中要重新创建出来
virtual void BoilWater()
{
cout << "煮水" << endl;
}
virtual void Brew()
{
cout << "冲泡" << endl;
}
virtual void Put()
{
cout << "放入Coffee" << endl;
}
virtual void Seasoning()
{
cout << "放入糖" << endl;
}
};
class Tea :public Base
{
public:
//父类是抽象类,父类中的纯虚函数,子类中要重新创建出来
virtual void BoilWater()
{
cout << "煮水" << endl;
}
virtual void Brew()
{
cout << "冲泡" << endl;
}
virtual void Put()
{
cout << "放入茶" << endl;
}
virtual void Seasoning()
{
cout << "放入枸杞" << endl;
}
};
void DoWork(Base* abs)//相当于Base*abs=new Coffee
{
abs->MakeDrinks();//调用类中成员函数
delete abs;//删除堆上的空间
}
int main()
{
//制作咖啡的过程
cout << "制作咖啡的过程" << endl;
DoWork(new Coffee);//实例化对象
cout << "-----------------------------" << endl;
//制作茶的过程
cout << "制作茶的过程" << endl;
DoWork(new Tea);//实例化对象
return 0;
}
这里我们要特别注意的是父类中的纯虚函数,那么这个类就相当于是抽象类
所以子类要重新写父类的纯虚函数,不然也会变成抽象类!
特别注意:在堆上创建的内存空间,及时释放
如有错误,多多指教
边栏推荐
猜你喜欢
随机推荐
ES2020(ES11)新特性
要写脚本,编程不好不要紧--浅谈CTF中脚本的编写方法
攻防世界——fakebook
ES8 | async和await
Nacos是如何实现心跳机制和服务续约以及超时剔除服务机制的?
制作SD启动卡,从SD卡启动系统
regular expression
BLE安全之配对流程剖析(2)
mockserver使用
【优化调度】基于粒子群实现并网模型下微电网的经济调度优化附matlab代码
Cortex M0软件复位方法
用于一型糖尿病血糖调节的无模型iPID控制器
Gatsby精粹,面向未来的blog
冒泡排序
C语言——按照指定分割符分割字符串
Monorepo[单一代码库] 与MicroService[微服务] 架构
六十分之七——焦虑路上的涅槃
生产者消费者模型
炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办
EasyExcel-(1)使用篇









