C++ 58 之 计算器案例

news2024/11/24 8:40:29

 虚函数,vitual function

C++动态多态性是通过虚函数来实现的,虚函数允许子类(派生类)重新定义父类(基类)成员函数,而子类(派生类)重新定义父类(基类)虚函数的做法称为覆盖(override),或者称为重写。

对于特定的函数进行动态绑定,c++要求在基类中声明这个函数的时候使用virtual关键字,动态绑定也就对virtual函数起作用.

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

class Cal {
public:
    int m_a;
    int m_b;
    virtual int getRes(){
        return 0;
    }
};

// 加法  子类要重写父类的虚函数
class Add : public Cal {
public:
    virtual int getRes(){
        return m_a + m_b;
    }
};

// 减法
class Sub : public Cal {
public:
    int getRes(){
        return m_a - m_b;
    }
};

int main()
{
    // 多态可以改善代码的可读性和组织性,同时也可以让程序具有可扩展性
    // 动态多态产生条件:
    // 1.要有继承关系
    // 2.父类中有虚函数、子类要重写父类的虚函数
    // 3.父类的指针或引用指向子类的对象
    
    // 加法:写法1 指针 
    // Cal* c1 = new Add;  // 函数名一样,但对象不一样,就执行不同对象里的函数 多态
    // c1->m_a = 1;
    // c1->m_b = 2;
    // cout << c1->getRes() << endl;
    // delete c1;
    // c1 = NULL;

    // 减法:写法1 指针
    // Cal* c1 = new Sub;
    // c1->m_a = 1;
    // c1->m_b = 2;
    // cout << c1->getRes() << endl;
    // delete c1;
    // c1 = NULL;

    // 加法:写法2 引用
    Add a1;
    Cal& c1 = a1;
    c1.m_a = 1;
    c1.m_b = 2;
    cout << c1.getRes() << endl;

    // 减法:写法2 引用
    Sub s1;
    Cal& c2 = s1;
    c2.m_a = 1;
    c2.m_b = 2;
    cout << c2.getRes() << endl;
    
    return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1828115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非接触式装配监控技术实现对装配工作站操作的实时动作识别和定位

当今快速发展的工业领域&#xff0c;智能制造作为第四次工业革命的核心&#xff0c;正引领着生产方式的革新。智能制造的关键在于实时监控和数据分析&#xff0c;这不仅能优化生产流程&#xff0c;还能显著提升产品质量和生产效率。其中&#xff0c;装配操作的实时监控对于制造…

配置Linux DNS服务器作为自己的windows 的 DNS服务器和 配置遇到的问题

安装DNS 库 和 DNS工具&#xff1a; # bind 是用于创建 dns服务的&#xff0c; bind-utils是用于测试DNS服务的工具 yum -y install bind bind-utils配置主配置文件&#xff1a; # 下载好后就已经有DNS服务&#xff0c;但是需要你自己去配置DNS服务信息# 配置主配置文件 [rootl…

Parallelize your massive SHAP computations with MLlib and PySpark

https://medium.com/towards-data-science/parallelize-your-massive-shap-computations-with-mllib-and-pyspark-b00accc8667c (能翻墙直接看原文&#xff09; A stepwise guide for efficiently explaining your models using SHAP. Photo by Pietro Jeng on Unsplash Int…

ThinkPHP邮件发送配置教程?怎么配置群发?

ThinkPHP邮件发送安全性如何保障&#xff1f;ThinkPHP如何实现&#xff1f; 无论是用户注册后的验证邮件&#xff0c;还是订单处理的通知邮件&#xff0c;都需要一个可靠的邮件发送机制。AokSend将详细介绍如何在ThinkPHP框架中配置邮件发送功能&#xff0c;并带您逐步了解其中…

第十九篇——信噪比:历史有真相嘛?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 对于信噪比的理解&#xff0c;通过历史是否有真相这个故事来表达信号和噪…

Docker Jenkins(改错版本)

Devops:它强调开发(Development)和运维(Operations)团队之间的协作.实现更快,更可靠的软件交付部署. JenKins是一个开源的自动化服务器,广泛用于构建,测试和部署软件项目.它是持续集成(CI)和持续交付/部署(CD)的工具.JenKins是实现DevOps实践的重要工具. 前端项目部署一般流程:…

CTFshow-web sql注入

Web171 1 在题目中可以看到查询语句为 "select username,password from user where username !flag and id ".$_GET[id]." limit 1;"; 直接使用万能密码 查到了所有用户 获得flag Web172 0 可以看到返回逻辑显示 如果返回的查询数据中username不等于fl…

【JavaEE精炼宝库】多线程(6)线程池

目录 一、线程池的概念及优势 1.1 线程池的概念&#xff1a; 1.2 线程池的优势&#xff1a; 二、工厂模式 三、标准库中的线程池 3.1 标准库线程池参数解释&#xff1a; 3.1.1 corePoolSize | maximumPoolSize&#xff1a; 3.1.2 keepAliveTime | unit&#xff1a; 3.1…

String常用方法详解

auth&#xff1a;别晃我的可乐 date&#xff1a;2024年06月16日 比较大小 equals(Object obj): 用于比较字符串内容是否相等。compareTo(String anotherString): 按字典顺序比较两个字符串。 String str1 "hello"; String str2 "world";boolean isEqual …

Python-random模块

一、random模块的用法 import randomprint(random.random()) # 不需要传参&#xff0c;random 返回0-1随机小数print(random.uniform(1, 10)) # 需要传参&#xff0c;返回参数区间的随机小数print(random.randint(-100, 100)) # 需要传参&#xff0c;返回参数区间的随机整数…

APP抓包渗透测试首尝试

前言 文章分为两大部分&#xff0c;一是介绍抓取app数据包的常用方法&#xff0c;二是结合笔者所接触的授权项目&#xff0c;对抓取的app数据包转传统Web渗透测试的小分享。通过阅读文章分享内容&#xff0c;读者能快速了解app渗透测试方式&#xff0c;初步入门APP抓包渗透测试…

禁止methtype联网

mathtype断网_如何禁止mathtype联网-CSDN博客https://blog.csdn.net/qq_41060221/article/details/128144783

03-QTWebEngine中使用qtvirtualkeyboard

qt提供了 virtualKeyboard 虚拟键盘模块&#xff0c;只需要在在main函数中最开始加入这样一句就可以了 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 但是在使用的时候遇到了一些问题&#xff1a; 1、中文输入的时候没有输入提示 Qvirt…

openh264 SVC 时域分层原理介绍

openh264 OpenH264是一个开源的H.264编码器&#xff0c;由Cisco公司开发并贡献给开源社区。它支持包括SVC&#xff08;Scalable Video Coding&#xff09;在内的多种编码特性&#xff0c;适用于实时应用场景&#xff0c;比如WebRTC。OpenH264项目在GitHub上是公开的&#xff0…

hugo-magic主题使用教程(一)

前提条件 以下教程以windows10为例操作终端使用git bash魔法上网的前提下 下载hugo https://github.com/gohugoio/hugo/releases/download/v0.127.0/hugo_extended_0.127.0_windows-amd64.zip解压到任意目录,然后将目录添加到系统环境变量 如图 (windows)打开cmd 输入 hugo …

windows系统,家庭自用NAS。本地局域网 Docker安装nextcloud

windows系统&#xff0c;家庭自用NAS。本地局域网 Docker安装nextcloud 1、docker安装 太简单了&#xff0c;直接去搜一搜。 docker-compose 相关命令 docker-compose down docker compose up -d2、还是使用老的 在你需要挂载的目录下&#xff0c;新建一个文件&#xff0c;…

2023年13个最适合销售电子书的WordPress主题

欢迎来到我们用于销售电子书和其他数字/可下载产品&#xff08;软件、应用程序、图标集、主题等&#xff09;的最佳WordPress主题的完整集合。 这些主题有内置的支付网关&#xff0c;可以通过 PayPal、信用卡等处理安全支付。&#xff08;易于配置&#xff01;&#xff09; 最…

我主编的电子技术实验手册(07)——串联电路

本专栏是笔者主编教材&#xff08;图0所示&#xff09;的电子版&#xff0c;依托简易的元器件和仪表安排了30多个实验&#xff0c;主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】&#xff0c;精心设计的【实验步骤】&#xff0c;全面丰富的【思考习…

海外仓系统如何让海外仓受益,WMS海外仓系统使用指南

随着跨境电商业务的快速发展&#xff0c;海外仓面临着需要更加高速运转的巨大挑战。 当海外仓出现因为手动作业导致效率低下&#xff0c;成本不断飙升或者出现库存管理问题的时候&#xff0c;意味着是时候引入一套合适的海外仓管理系统了。 对于寻求海外仓业务流程优化的企业…

2024年大数据领域的主流分布式计算框架有哪些

Apache Spark 适用场景 以批处理闻名&#xff0c;有专门用于机器学习的相关类库进行复杂的计算&#xff0c;有SparkSQL可以进行简单的交互式查询&#xff0c;也可以使用DataSet&#xff0c;RDD&#xff0c;DataFrame进行复杂的ETL操作。 关键词 处理数据量大批计算微批计算…