要求:
1.根据顾客要求定义hotdog,计算总价
2.按uml类图编写


测试样例:
int main() {
auto h = new Hotdog(new WheatBread());
h->addFood(new Beef());
h->addFood(new Cheese());
h->addFood(new Mustard());
h->addFood(new Onion());
h->addFood(new Onion());
h->addFood(new Tomato());
h->printDetails();
}

#include<iostream>
#include<vector>
using namespace std;class FoodIngredients{int m_price;
public:FoodIngredients(int price){m_price=price;}int getPrice()const{return m_price;}virtual void printDetail()=0;
};class Bread:public FoodIngredients{
public:Bread(int price):FoodIngredients(price){}void printDetail(){cout<<"Bread"<<" "<<getPrice()<<endl;}
};
class Wheat_bread:virtual public Bread{
public:Wheat_bread(int price=7):Bread(price){}void printDetail(){cout<<"Wheat_bread"<<" "<<getPrice()<<endl;}
};
class Honey_break:virtual  public Bread{
public:Honey_break(int price=8):Bread(price){}void printDetail(){cout<<"Honey_break"<<" "<<getPrice()<<endl;}
};class Bacon:virtual public FoodIngredients{
public:Bacon(int price=8):FoodIngredients(price){}void printDetail(){cout<<"Bacon"<<" "<<getPrice()<<endl;}
};
class Beef:virtual public FoodIngredients{
public:Beef(int price=12):FoodIngredients(price){}void printDetail(){cout<<"Beef"<<" "<<getPrice()<<endl;}
};
class Onion:virtual public FoodIngredients{
public:Onion(int price=1):FoodIngredients(price){}void printDetail(){cout<<"Onion"<<" "<<getPrice()<<endl;}
};
class Tomoto:virtual public FoodIngredients{
public:Tomoto(int price=2):FoodIngredients(price){}void printDetail(){cout<<"Tomoto"<<" "<<getPrice()<<endl;}
};
class Lettuce:virtual public FoodIngredients{
public:Lettuce(int price=1):FoodIngredients(price){}void printDetail(){cout<<"Lettuce"<<" "<<getPrice()<<endl;}
};
class Cheese:virtual public FoodIngredients{
public:Cheese(int price=2):FoodIngredients(price){}void printDetail(){cout<<"Chess"<<" "<<getPrice()<<endl;}
};
class Mustard:virtual public FoodIngredients{
public:Mustard(int price=1):FoodIngredients(price){}void printDetail(){cout<<"Mustard"<<" "<<getPrice()<<endl;}
};class Hotdog{Bread *bread;vector<FoodIngredients *> v;//虚基类无法有对象
public:Hotdog(Bread *b){bread=b;}bool addFood(FoodIngredients *f){v.push_back(f);}bool setbreak(Bread *b){}void printDetails(){cout<<"消费表单:"<<endl;bread->printDetail();for(vector<FoodIngredients *>::iterator it=v.begin();it!=v.end();it++){FoodIngredients *f=*it;f->printDetail();}}int getTotalPrice(){int total=0;total+=bread->getPrice();for(vector<FoodIngredients *>::iterator it=v.begin();it!=v.end();it++){FoodIngredients *f=*it;total+=f->getPrice();}return total;}
};int main(){auto h = new Hotdog(new Wheat_bread());h->addFood(new Beef());h->addFood(new Cheese());h->addFood(new Mustard());h->addFood(new Onion());h->addFood(new Onion());h->addFood(new Tomoto());h->printDetails();cout <<"总计:"<< h->getTotalPrice() << endl;return 0;
}

结果:

消费表单:
Wheat_bread 7
Beef 12
Chess 2
Mustard 1
Onion 1
Onion 1
Tomoto 2
总计:26

c++练习--hotdog相关推荐

  1. How HBO’s Silicon Valley built “Not Hotdog” with mobile TensorFlow, Keras React Native

    The HBO show Silicon Valley released a real AI app that identifies hotdogs - and not hotdogs - like ...

  2. 图像分类数据集 (热狗 hotdog)

    引入   热狗数据集包含2800包含热狗和其他食物的图像,下载地址如下:   原始:https://apache-mxnet.s3-accelerate.amazonaws.com/gluon/dat ...

  3. 如何使用Transformer来做物体检测?

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Jacob Briones 来源丨AI公园 编辑丨极市平台 导 ...

  4. 两个月入门深度学习,全靠动手实践!一位前端小哥的经验分享

    两个月入门深度学习,全靠动手实践!一位前端小哥的经验分享   在当前社会,技术日新月异,一个全栈工程师不及时学习新知识,掌握AI技能,再过两年就算不上"全栈"了. 产品发烧友.前端 ...

  5. 深度丨深度强化学习研究的短期悲观与长期乐观(长文)

    文章来源:机器之心 深度强化学习是最接近于通用人工智能(AGI)的范式之一.不幸的是,迄今为止这种方法还不能真正地奏效.在本文中,作者将为我们解释深度强化学习没有成功的原因,介绍成功的典型案例,并指出 ...

  6. 设计模式 - 迭代器模式(iterator pattern) 具体解释

    迭代器模式(iterator pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 迭代器模式(iterator pattern) : 提供一 ...

  7. 80 年代以来的操作系统 GUI 设计进化史

    70年代,施乐公司 Xerox Palo Alto Research Center (PARC) 的研究人员开发了第一个 GUI 图形用户界面,开启了计算机图形界面的新纪元,80年代以来,操作系统的界 ...

  8. Java设计模式(十一):组合设计模式

    1. 应用场景 这种组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方.比如:文件目录显示,多及目录呈现等树形结构数据的操作. 2. 概念 将对象组合成树形结构来表示" ...

  9. Java设计模式(十):迭代器设计模式

    1.应用场景 (1)访问一个聚合对象的内容而无需暴露它的内部表示 (2)支持对聚合对象的多种遍历 (3)为遍历不同的聚合结构提供一个统一的接口 2.概念 提供一种顺序访问聚合对象元素的方法,并且不暴露 ...

最新文章

  1. 部署 kubernetes 集群(CentOS7.3,K8S1.8.3)
  2. linux空白屏幕,如何在Linux中的Logitech R400上使空白屏幕键正常工作?
  3. 一个可以在github上搜代码段的网站
  4. Android下Activity的生命周期
  5. Matlab图像剪切,超出图像区域指定颜色填充
  6. SpringBoot2.0 基础案例(13):基于Cache注解模式,管理Redis缓存
  7. Android--数据持久化之内部存储、Sdcard存储
  8. UnityShader - 模拟动态光照特效
  9. 2021年天猫淘宝双12,京东双十二活动时间以及玩法介绍
  10. JQuery图片跟随鼠标移动
  11. 免费下载的音乐的6个网站,非常实用!
  12. linux中双方同步unison服务器搭建
  13. ubuntu 解包和压包.img文件
  14. 粗浅的rdt协议介绍
  15. TSCH协议及WIA-PA系统芯片
  16. 服务器微信了早上好,早上好微信问候语(精选50句)
  17. 数据分析行业分析:四个模型
  18. 经营棋牌室的难点和痛点
  19. 1小时销量突破50万台!小金刚Redmi Note 10系列力创首销新纪录
  20. Qt4.8.6移植到hi3559(四)

热门文章

  1. BotVS开发基础—2.5 状态信息显示表格
  2. 深入理解人工智能模型能力指标F1的具体意义
  3. Linux命令之man-1
  4. 苹果公司的Siri小姐住在何处?
  5. virtualbox安装与卸载
  6. CC00384.CloudKubernetes——|KuberNetesCI/CD.V22|——|Jenkins.v02|自动构建Java应用.v02|
  7. 4.7蓝桥杯做题-心愿便利贴-消失的 Token-封装 Promisefy 函数-趣购-乾坤大挪移心法
  8. table 固定表格宽度,设置列宽,超出内容省略号显示
  9. Nginx学习笔记4--(极客时间-陶辉)
  10. 阿里P7大牛细说架构——设计模式专栏