当前位置:网站首页>多态案例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;
}
这里我们要特别注意的是父类中的纯虚函数,那么这个类就相当于是抽象类
所以子类要重新写父类的纯虚函数,不然也会变成抽象类!
特别注意:在堆上创建的内存空间,及时释放
如有错误,多多指教
边栏推荐
猜你喜欢
随机推荐
双馈风电机组备用容量控制策略研究
antdv4 升级指北
小程序 数据监听(observers),避免赋值死循环
一篇文章带你解读蓝牙配对绑定
攻防世界——fakebook
文件包含漏洞-知识点
lvm建立逻辑卷
优雅地处理重复请求(并发请求)
蓝牙5.2新特性 - Enhance ATT
两个联动的可扩展收起的textView的简单实现
蓝牙Mesh的基本概念
lvm creates logical volumes
动手学线性代数
步进电机工作原理
Offensive and defensive world - leaking
Matlab实现异构交通流
蓝牙5.2新特性 - LEPC简介
oracle如何删除表并且释放表空间
微服务:事务管理
炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办





![Monorepo[单一代码库] 与MicroService[微服务] 架构](/img/2e/0d7f8fbfd778ae27001dd8e7e64b94.jpg)


