多态案例二-制作饮品

利用多态实现制作咖啡和茶水
Coffee和Tea继承了抽象类AbstractDrinking,并重写了AbstractDrinking的抽象函数

#include<iostream>
using namespace std;//多态案例二 制作饮品class AbstractDrinking
{public://煮水virtual void Boil() = 0;//冲泡virtual void Brew() = 0;//倒入杯中virtual void PourInCup() = 0;//加入辅料virtual void PutSomething() = 0;//制作饮品void makeDrink() {Boil();Brew();PourInCup();PutSomething();}
};//制作咖啡
class Coffee :public AbstractDrinking
{public://煮水virtual void Boil() {//子类重写父类中的纯虚函数cout << "煮农夫山泉" << endl;}//冲泡virtual void Brew() {cout << "冲泡咖啡" << endl;}//倒入杯中virtual void PourInCup() {cout << "倒入咖啡杯中" << endl;}//加入辅料virtual void PutSomething() {cout << "加入牛奶和糖" << endl;}};//制作茶水
class Tea :public AbstractDrinking
{public://煮水virtual void Boil() {cout << "煮怡宝矿泉水" << endl;}//冲泡virtual void Brew() {cout << "冲泡茶叶" << endl;}//倒入杯中virtual void PourInCup() {cout << "倒入茶杯中" << endl;}//加入辅料virtual void PutSomething() {cout << "加入枸杞" << endl;}};//制作函数
void doWork(AbstractDrinking *abs) {abs->makeDrink();delete abs;//
}void test01() {//制作咖啡doWork(new Coffee);//父类指针指向子类对象 AbstractDrinking *abs=new Coffeecout << "----------------" << endl;doWork(new Tea);
}int main() {test01();system("pause");return 0;
}

重要代码:

//制作函数
void doWork(AbstractDrinking *abs) {abs->makeDrink();delete abs;//
}
void test01() {//制作咖啡doWork(new Coffee);//父类指针指向子类对象 AbstractDrinking *abs=new Coffee}

调用doWork(new Coffee)时,传入的是子类Coffee的一个对象,即AbstractDrinking *abs=new Coffee;
abs->makeDrink();这就是动态多态要满足的条件
运行结果;

【b站黑马程序员C++视频学习笔记-多态案例二-制作饮品】相关推荐

  1. 【b站黑马程序员C++视频学习笔记-多态案例三-电脑组装】

    多态案例三-电脑组装 电脑主要组成部件为CPU(用于计算),显卡(用于显示),内存条(用于存储).把每个零件封装出抽象父类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商.创建 ...

  2. 【b站黑马程序员C++视频学习笔记-继承方式】

    继承方式 有以下三种继承方式: 公共继承public 保护继承protected 私有继承private 继承之后访问权限如下: 类名/属性 int a int b int c 父类A public ...

  3. 尚硅谷+黑马程序员MongoDB视频学习笔记(一)

    本学习笔记是来源于学习B站上的尚硅谷和黑马的MongoDB教学视频而做的知识总结. 一.数据库(Database) 数据库是按照数据结构来组织.存在和管理数据的仓库.说白了,数据库就是存在数据的仓库. ...

  4. 黑马程序员 c++视频学习详细笔记 下载地址

    黑马程序员 c++视频学习详细笔记 下载地址: https://download.csdn.net/download/m0_47891203/84348174 建议结合博主博文学习

  5. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  6. 黑马程序员Java教程学习笔记(三)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...

  7. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

  8. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  9. 【黑马程序员新版Linux学习笔记】Linux系统实用操作命令——操作演示

    [黑马程序员新版Linux学习笔记]Linux 零基础快速入门: (一)Linux基本命令--操作演示 (二)Linux用户和权限 -- 操作演示 (三)Linux 小技巧快捷键 (四)Linux系统 ...

最新文章

  1. 组件方式开发 Web App全站 学习视频 分享
  2. Java 修饰符、运算符笔记总结
  3. SQL语句中的select高级用法
  4. 汉明距离—leetcode461
  5. html中的meta详解
  6. 深入理解r2dbc-mysql
  7. 小马源码_Java互联网架构-重新认识Java8-HashMap-不一样的源码解读
  8. 复练-软考网规-机房建设规范专题
  9. nagios监控linux主机及服务信息
  10. Python计算水仙花数
  11. 【WPA TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】
  12. 梳理常见硬盘存储 I/O 接口相关简称
  13. 【Code pratice】——星期一、猜年龄、合并检测、生日蜡烛
  14. xp设置系统时间同步服务器,xp设置时间同步服务器
  15. CPU 基本工作原理和概念
  16. OTA前装搭载率逼近50%,哪些供应商正在领跑细分赛道
  17. libuv访问mysql_libuv源码剖析
  18. VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5,本人X220亲测
  19. 根据Excel表头的位置数转化为对应列名称
  20. HTTP 笔记 发展历程 缓存

热门文章

  1. 网址验证的两种正则表达式
  2. 批量解压子目录下包含密码的压缩包
  3. Oracle JDE 重复制造MRP概览
  4. C语言如何做到四舍五入保留小数
  5. JMeter常见错误解决方法—你知道几种
  6. 【SA8295P 源码分析】18 - Camera Bringup 流程 及 源码分析
  7. 战五渣系列之八(绝杀AOP)
  8. 道相同、谋相通、人相守:华为副总裁周跃峰分享如何与用户精英共创数字基建
  9. Java校正电脑时间(java 时间同步)
  10. 商业全能手:LEADTOOLS V22 【winlinux】双核出发Crack