首页 > 其他分享 >多态案例---制作饮品

多态案例---制作饮品

时间:2024-09-15 16:49:33浏览次数:7  
标签:cout 饮品 void 多态 virtual --- public Boil makeDrink

制作饮品------运用纯虚函数知识

#include<iostream>
#include<string>
using namespace std;

class AbstractDrink {
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 AbstractDrink {
public:
	virtual void Boil() {
		cout << "加入农夫山泉" << endl;
	}
	virtual void Brew() {
		cout << "倒入煮好的农夫山泉" << endl;
	}
	virtual void PourInCup() {
		cout << "倒入杯子中" << endl;
	}
	virtual void PutSomething() {
		cout << "加入牛奶和糖" << endl;
	}
};

class Tea :public AbstractDrink {
public:
	virtual void Boil() {
		cout << "加入自来水" << endl;
	}
	virtual void Brew() {
		cout << "倒入煮好的自来水" << endl;
	}
	virtual void PourInCup() {
		cout << "倒入茶具中" << endl;
	}
	virtual void PutSomething() {
		cout << "加入枸杞和糖" << endl;
	}
};

void Work(AbstractDrink* abc) {
	abc->makeDrink();
}
int main()
{
	Work(new Coffee);
	cout << "-----------------------------" << endl;
	Work(new (Tea));

	return 0;
}

标签:cout,饮品,void,多态,virtual,---,public,Boil,makeDrink
From: https://blog.csdn.net/2301_79969370/article/details/142286074

相关文章

  • Docker-compose:管理多个容器
    170.Docker-compose容器编排Docker-Compose是Docker公司推出的一个开源工具软件,可以管理多个Docker容器组成一个应用。用户需要定义一个YAML格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器(或者说能实现对Dock......
  • manim边学边做--弧形多边形
    弧形多边形是一种结合了圆弧和多边形的图形,这类几何图形在设计中应用非常广泛。比如在家居设计中,看看家里的沙发,餐桌和座椅等,它们的边角,靠背等地方都是弧形的设计,这种设计有效柔化了室内空间,使整体氛围更加和谐自然。还有景观和建筑设计中,弧形多边形常被用于道路规划、花坛布局......
  • Ubuntu 22.04.5 LTS 发布下载 - 现代化的企业与开源 Linux
    Ubuntu22.04.5LTS(JammyJellyfish)-现代化的企业与开源LinuxUbuntu22.04.5发布,配备Linux内核6.8请访问原文链接:https://sysin.org/blog/ubuntu-2204/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCanonical发布了Ubuntu22.04.5LTS,作为Ubuntu22.0......
  • JAVA基础之六-Stream(流)简介
    我在别的篇幅已经说过:流这个东西偶尔可以用用,但我个人最大的学习动力(目前)仅仅是为了有助于阅读spring越发繁复的源码 本文主要介绍Stream接口(包括主要的方法)和相关的几个主要接口:Predicate、Consumer、Supplier还有Collector接口,Collectors工具类。由于网上已经有太多的文章......
  • 深度学习-神经网络构造
    文章目录一、正则化惩罚1.L1正则化2.L2正则化二、梯度下降(GradientDescent)1.基本原理2.注意事项三、BP神经网络1.基本原理2.网络结构3.特点四、总结一、正则化惩罚正则化惩罚(RegularizationPenalty)是机器学习中常用的一种技术,用于减少模型的复杂度,防止模型过拟......
  • 条件编译 - 代码裁剪的工具 --进阶C语言
    目录条件编译-代码裁剪的工具为何要有条件编译条件编译都在那些地方用?见一见条件编译的代码宏是否被定义vs宏是否为真or假编译器也能够自动帮你加上宏GCCVS2023-VS2019#ifdef/#ifndef#if注意事项让#if和#ifdef/#ifndef完全一样条件编译也支持嵌套一个使用#ifdefined能起到很......
  • 【计算机网络 - 基础问题】每日 3 题(六)
    ✍个人博客:Pandaconda-CSDN博客......
  • 【计算机网络 - 基础问题】每日 3 题(五)
    ✍个人博客:Pandaconda-CSDN博客......
  • 深入理解 Write-Ahead Logging (WAL) 及其应用
    在讨论数据库原理的时候,我们经常会听到一种技术-Write-AheadLogging(WAL),它保证了数据的持久性和一致性。WAL的基本思想非常简单,但它的应用范围非常广泛,从数据库到分布式系统,再到各种现代应用的开发中,都能看到它的影子。本文将深入剖析WAL的基本机制,并探讨其在不同应用场......
  • Spring Boot-定时任务问题
    SpringBoot定时任务问题及其解决方案1.引言在企业级应用中,定时任务是一项常见需求,通常用于自动化执行某些操作,如数据备份、日志清理、系统监控等。SpringBoot提供了简洁易用的定时任务机制,允许开发者通过简单的配置来实现定时任务。然而,在实际开发中,定时任务可能会遇......