大话设计模式学习 C++

2023-11-13

工厂模式

#include "bits/stdc++.h"
using namespace std;

//基类 进行操作
class Operation
{
protected:
    /* data */
    double _numberA = 0;
    double _numberB = 0;

public:
    virtual double getResult() = 0;
    void setNumber(double A, double B)
    {
        _numberA = A;
        _numberB = B;
    };
    ~Operation(){};
};
//子类 进行具体的运算操作
class OpAdd : public Operation
{
public:
    double getResult() override
    {
        return _numberA + _numberB;
    }
};

class OpSub : public Operation
{
public:
    double getResult() override
    {
        return _numberA - _numberB;
    }
};

class OpMul : public Operation
{
public:
    double getResult() override
    {
        return _numberA * _numberB;
    }
};

class OpDiv : public Operation
{
public:
    double getResult() override
    {
        if (_numberB == 0)
            throw "除数不能为0";
        return _numberA / _numberB;
    }
};

//工厂类 用于产生对应类型的对象 将变化限制在工厂中
class OpFactory
{
public:
    static Operation *createFactory(char opreate)
    {
        Operation *oper = nullptr;
        switch (opreate)
        {
        case '+':
            oper = new OpAdd();
            break;
        case '-':
            oper = new OpSub();
            break;
        case '*':
            oper = new OpMul();
            break;
        case '/':
            oper = new OpDiv();
            break;
        default:
            break;
        }
        return oper;
    }
};

//界面逻辑
int main()
{
    string op;
    double a, b;
    cin >> a >> op >> b;
    Operation *oper = OpFactory::createFactory(op[0]);
    oper->setNumber(a, b);
    try
    {
        cout << "运算结果为: " << oper->getResult();
    }
    catch (const char *msg)
    {
        cout << msg;
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大话设计模式学习 C++ 的相关文章

  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 如何制作可启动程序?

    所以 这个问题可能看起来很奇怪 但假设我编译了 int main void int x 3 int y 4 int z x y 是否可以让CPU这样运行 如何 例如 这允许我写入监视器吗 如果我没记错的话 内存中有些地方可以写入要显示的内容
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • C#6 中的长字符串插值行

    我发现 虽然字符串插值在应用于现有代码库的字符串 Format 调用时非常好 但考虑到通常首选的列限制 字符串对于单行来说很快就会变得太长 特别是当被插值的表达式很复杂时 使用格式字符串 您将获得一个可以拆分为多行的变量列表 var str
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • 通过 Tab 键浏览 XML 文档字段

    In VB NET you can move through the fields in the XML member documentation with the Tab key 这在 C 中不起作用 还有其他方法吗 除了用鼠标将光标放在
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T

随机推荐

  • echarts前后端交互数据_Web的前后端交互

    1503年 列奥纳多 达 芬奇回到佛罗伦萨 开始绘制 蒙娜丽莎 耗时四年 塑造了资本主义上升时期一位城市有产阶级的妇女形象 将自己内心的的妇女通过画卷展示给了众人 期间无数的灵感 无数的情绪 无数的状态这是大家不能所得知的 更不用说付出的心
  • MAC系统 批量删除一个项目中的所有.svn

    打开终端 进入项目所在的文件夹 使用命令find type d name svn xargs rm rvf就可将项目的 svn全部删除
  • Oracle存储过程总结(一、基本应用)

    1 创建存储过程 create or replace procedure test var name 1 in type var name 2 out type as 声明变量 变量名 变量类型 begin 存储过程的执行体 end tes
  • React系列之useState

    目录 1 基础使用 2 状态的读取和修改 3 组件的更新过程 4 使用规则 1 基础使用 作用 useState为函数组件提供状态 state 使用步骤 导入 useState 函数 调用 useState 函数 并传入状态的初始值 从us
  • 人脸识别刷脸以往大多应用在安防领域

    最近你会看到各大媒体 网络平台都是关于刷脸的报道 感觉不聊聊刷脸是不是就已经跟这个时代脱节了 简单的说 刷脸支付是一种连手机都不需要的新型支付方式 刷脸支付意味着在手机没电 信号不好 因为卡顿打不开支付宝和微信 甚至出门忘记带手机时也能完成
  • AMBA低功耗接口(一)Q_Channel

    AMBA提供了 低功耗的接口 用于实现power控制功能 目前 AMBA里面 包含2种低功耗接口 Q Channel 实现简单的power控制 如上电 下电 P Channel 实现复杂的power控制 如全上电 半上电 1 4上电等 AR
  • 微服务springcloud环境下基于Netty搭建websocket集群实现服务器消息推送----netty是yyds

    netty搭建websocket 1 背景 2 websocket 3 netty 3 1 socket 3 2 Java IO模型 3 3 netty 3 3 1 概念 3 3 2 三大特点 3 3 3 主从Reactor架构图 3 3
  • 期货基础知识

    一 期货是什么 期货是与现货相对应 并由现货衍生而来 期货通常指期货合约 期货与现货完全不同 现货是实实在在可以交易的货 商品 期货主要不是货 而是以某种大众产品如棉花 大豆 石油等及金融资产如股票 债券等为标的标准化可交易合约 因此 这个
  • C++11下的单例模式

    动机 在软件系统中 经常有这样一些特殊的类 必须保证它们在系统中只存在一个实例 才能确保它们的逻辑正确性 以及良好的效率 绕过常规的构造器 提供一种机制来保证一个类只有一个实例 定义 保证一个类仅有一个实例 并提供一个该实例的全局访问点 1
  • Java 反射小案例(使用配置文件)

    Java 反射小案例 使用配置文件 记录学习过程 定义两个类一个Student 一个Person 还有一个 主类Reflect Test 再加一个配置文件 两类 public class Student public void sleep
  • RabbitMQ死信队列学习笔记

    视频地址 死信的概念 先从概念解释上搞清楚这个定义 死信 顾名思义就是无法被消费的消息 字面意思可以这样理解 一般来说 producer 将消息投递到 broker 或者直接到 queue 里了 consumer 从 queue 取出消息进
  • JDBC连接

    JDBC连接 加载JDBC驱动程序 打开JDBC连接 打开带有URL的连接 使用URL 用户和密码打开连接 使用URL和属性打开连接 关闭JDBC连接 通过Try With Resources关闭连接 setAutoCommit commi
  • 在机器学习中,你需要多少训练数据?

    你为什么会问这个问题 首先我们要搞清楚你为什么会问需要多大的训练数据集 可能你现在有以下情况 你有太多的数据 可以考虑通过构建学习曲线 learning curves 来预估样本数据集 representative sample 的大小或者
  • 焊缝识别技术研究

    一 绪论 提高焊接效率和保证焊接质量是焊接产业行业的重要发展方向 示教 在线 的编程模式需要占用大量的编程时间 效率低下 同时 示教的精度难以保证 可重复性差 难以适用于复杂的机器人作业 离线编程软件有RobotMaster RobotSt
  • JS判断对象、数组是否包含某个属性、某个值

    一 判断对象是否包含某个属性 可以使用以下几种方法来判断对象是否包含某个属性 1 in 操作符 使用 in 操作符可以检查对象是否包含指定的属性 它会检查对象及其原型链上的所有属性 const obj name John age 25 co
  • 2023智源大会议程公开丨视觉与多模态大模型论坛

    6月9日 2023北京智源大会 将邀请AI领域的探索者 实践者 以及关心智能科学的每个人 共同拉开未来舞台的帷幕 你准备好了吗 与会知名嘉宾包括 图灵奖得主Yann LeCun OpenAI创始人Sam Altman 图灵奖得主Geoffr
  • 第十六篇:关于Unity开发WebGL遇到的坑

    1 资源消耗问题 Unity开发Web 项目 发布出来的项目是很消耗内存资源的 这是Unity引擎决定 我们要做的就是尽可能的优化 通常的方法有降低模型面数 降低贴图的大小 减少点光源 减小烘焙贴图大小等 当然也可以使用three js开发
  • 机器人流程自动化(RPA):6大开源工具

    51CTO com快译 与实施许多新软件一样 开始使用机器人流程自动化 RPA 方面面临自建还是外购的选择 如果是自建 只要你有合适的人员 预算到位 可以从头开始编写自己的机器人 如果是外购 有一个新兴的商业软件供应商市场 它们提供各式各样
  • 数据链路层--以太网协议

    目录 以太网协议 认识以太网 以太网帧格式 认识MAC地址 认识MTU 数据跨网络传输的过程 ARP协议 ARP概念 ARP数据的格式 ARP协议的工作流程 ARP请求的过程 ARP应答的过程 ARP缓存表 在学习完ip协议后知道 网络层解
  • 大话设计模式学习 C++

    工厂模式 include bits stdc h using namespace std 基类 进行操作 class Operation protected data double numberA 0 double numberB 0 pu