C++ 58 之 计算器案例

 虚函数,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.mzph.cn/pingmian/28166.shtml

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

相关文章

day38-39| 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62.不同路径 343. 整数拆分 96.不同的二叉搜索树

文章目录 前言动态规划理论基础509. 斐波那契数思路方法一 完整动态规划方法二 dp简化版方法三 使用递归 70. 爬楼梯思路方法一 动态规划方法一2 教程里面的简化方法方法二 拓展 746. 使用最小花费爬楼梯思路方法一方法二 拓展 62.不同路径思路 动态规划方法一方法二 递归 63. …

设计模式学习(二)工厂模式——工厂方法模式

设计模式学习&#xff08;二&#xff09;工厂模式——工厂方法模式 前言工厂方法模式简介示例优点缺点使用场景 前言 前一篇文章介绍了简单工厂模式&#xff0c;提到了简单工厂模式的缺点&#xff08;违反开闭原则&#xff0c;扩展困难&#xff09;&#xff0c;本文要介绍的工…

Linux系统内核作用

Linux 内核主要有以下重要作用&#xff1a; 1. 进程管理&#xff1a;负责进程的创建、调度、终止等&#xff0c;合理分配 CPU 资源给各个进程&#xff0c;确保多任务的高效运行。 2. 内存管理&#xff1a;管理系统的物理内存和虚拟内存&#xff0c;包括内存分配、回收、页面交换…

Hadoop 2.0:主流开源云架构(四)

目录 五、Hadoop 2.0访问接口&#xff08;一&#xff09;访问接口综述&#xff08;二&#xff09;浏览器接口&#xff08;三&#xff09;命令行接口 六、Hadoop 2.0编程接口&#xff08;一&#xff09;HDFS编程&#xff08;二&#xff09;Yarn编程 五、Hadoop 2.0访问接口 &am…

java打印helloworld

源代码 public class Function1 {public static void main(String[] args) {System.out.println("hello world");}} 打印结果

MongoDB 自动增长

MongoDB 自动增长 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;以其灵活的数据模型和强大的查询语言而闻名。在关系型数据库中&#xff0c;我们通常使用自动增长的整数作为主键&#xff0c;以确保唯一性。然而&#xff0c;MongoDB 的文档模型与此略有不同。MongoDB 使用 _i…

为什么说Python 是胶水语言?

​ "Python 是胶水语言"这一说法是指它很擅长将不同的程序或代码库连接在一起&#xff0c;能够让来自不同编程语言或框架的组件无缝协作。Python 具有丰富的库和简单的语法&#xff0c;使得它可以轻松调用其他语言编写的程序或使用不同技术栈的模块。 ​ 以下是几个…

linux下nvidia驱动安装-ubuntu22.04安装2060-notebook驱动

原文链接&#xff1a;linux下gcc编译安装与卸载-ubuntu22.04安装gcc-12.3.0 导言 nvidia驱动是显卡稳定运行的重要保证&#xff0c;不同的显卡有不同驱动&#xff0c;不同驱动对操作系统/cuda支持都存在一定差别。本次驱动安装主要完成2060-notebook显卡在linux系统下的驱动安…

C学习自学笔记-会陆续完善对应章节编程经典例子

C学习笔记 0>C语言概述 为什么学习C语言 1&#xff09;C的起源和发展------了解即可 B语言、C语言、C语言的产生地&#xff1a;都出自 美国贝尔实验室 2&#xff09;C的特点 优点&#xff1a;代码量小、速度快、功能强大 缺点&#xff1a;危险性高、开发周期长、可移植性…

可持久化数据结构详解与实现

一、引言 在计算机科学中&#xff0c;数据结构是用于组织、存储和管理数据的方式。然而&#xff0c;随着数据量的不断增长和数据处理需求的复杂化&#xff0c;传统的数据结构在某些场景下显得力不从心。为了应对这些挑战&#xff0c;可持久化数据结构应运而生。可持久化数据结…

MATLAB直方图中bin中心与bin边界之间的转换

要将 bin 中心转换为 bin 边界&#xff0c;请计算 centers 中各连续值之间的中点。 d diff(centers)/2; edges [centers(1)-d(1), centers(1:end-1)d, centers(end)d(end)];要将 bin 边界转换为bin 中心 bincenters binedges(1:end-1)diff(binedges)/2;

【AI应用探讨】— 星火大模型应用场景

目录 1 金融行业 2 零售行业 3 物流行业 4 教育行业 5 办公场景 6 医疗场景 7 工业场景 1 金融行业 风险评估与风控决策&#xff1a;星火大模型可以利用大数据和人工智能技术&#xff0c;对客户的信用数据、行为数据等进行分析和建模&#xff0c;帮助金融机构实现更精确…

Qt事件系统

概述 在Qt中&#xff0c;事件是对象&#xff0c;派生自抽象的QEvent类&#xff0c;它表示应用程序内部发生的事情或作为应用程序需要知道的外部活动的结果。事件可以由QObject子类的任何实例接收和处理&#xff0c;但它们与小部件特别相关。本文档描述了在典型应用程序中如何传…

每日一练——用队列实现栈

225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; Queue.h #pragma once #include<stdlib.h> #include<assert.h> #include<stdbool.h>typedef int QDataType;typedef struct QNode {QDataType data;struct QNode* next; } QNode;typedef struct …

安全测试框架 二

使用安全测试框架进行测试&#xff0c;可以遵循以下步骤进行&#xff0c;以确保测试的全面性和系统性&#xff1a; 一、明确测试目标和需求 确定测试的范围和重点&#xff0c;明确要测试的系统或应用的安全性方面的关键点和重要性。根据业务需求和安全标准&#xff0c;制定详…

【办公类-04-03】华为助手导出照片视频分类(根据图片、视频的文件名日期分类导出)

背景需求&#xff1a; 用华为手机助手导出的照片视频&#xff0c;只能将jpg照片&#xff08;exifread读取图片的exif拍摄日期&#xff0c;Png、JPEG、mp4都无法识别到exif信息&#xff09; 【办公类-04-02】华为助手导出照片&#xff08;jpg&#xff09;读取拍摄时间分类导出…

python tensorflow 各种神经元

感知机神经元&#xff08;Perceptron Neuron&#xff09;&#xff1a; 最基本的人工神经元模型&#xff0c;用于线性分类任务。 import numpy as npclass Perceptron:def __init__(self, input_size, learning_rate0.01, epochs1000):self.weights np.zeros(input_size 1) #…

LeetCode | 709.转换成小写字母

这道题可以用api也可以自己实现&#xff0c;都不难&#xff0c;大小字母之前相差了32&#xff0c;检查到大写字母时加上32即可 class Solution(object):def toLowerCase(self, s):""":type s: str:rtype: str"""return s.lower()class Solution…

试论地产需求政策的有效性边界

分析师通过对传统框架因子的分析和美日地产的回顾&#xff0c;指出收入政策将成为核心&#xff0c;测算认为地方收储面积约0.5-1.1亿平、收储资金0.8-1.9万亿元&#xff0c;70城二手房价降幅收窄至[-4.5%&#xff0c;-1.6%]。 事件&#xff1a;2024年5月17日&#xff0c;央行印…

代码生成器功能

代码生成器功能 SELECTtable_name,table_comment,create_time,update_time ,table_schema FROMinformation_schema.TABLES WHEREtable_schema (SELECT DATABASE()) 该SQL语句的作用是从MySQL的information_schema.TABLES表中查询当前数据库下所有表的基本信息。具体解释如下…