C++之​虚函数

news2024/11/17 0:05:53

虚函数是C++中的一个重要概念,它主要用于实现多态。在基类中声明一个虚函数,派生类可以重写这个函数,从而实现不同的功能。当基类指针或引用指向派生类对象时,调用虚函数会根据实际对象类型来调用相应的派生类中的函数实现,这就是多态的体现。

举例说明:

#include <iostream>
using namespace std;
​
// 基类
class Animal {
public:
    // 虚函数
    virtual void makeSound() {
        cout << "Animal makes a sound" << endl;
    }
};
​
// 派生类1
class Dog : public Animal {
public:
    // 重写虚函数
    void makeSound() override {
        cout << "Dog barks" << endl;
    }
};
​
// 派生类2
class Cat : public Animal {
public:
    // 重写虚函数
    void makeSound() override {
        cout << "Cat meows" << endl;
    }
};
​
int main() {
    // 基类指针指向派生类对象
    Animal* animalPtr = new Dog();
    animalPtr->makeSound(); // 输出:Dog barks
​
    delete animalPtr;
​
    // 基类引用指向派生类对象
    Animal& animalRef = *new Cat();
    animalRef.makeSound(); // 输出:Dog barks
​
    delete &animalRef;
    system("pause");
    return 0;
}
​

在这个例子中,基类Animal有一个虚函数makeSound(),派生类Dog和Cat分别重写了这个函数。当我们使用基类指针或引用指向派生类对象时,调用makeSound()会根据实际对象类型(即Dog或Cat)来调用相应的派生类中的函数实现。这就是虚函数实现多态的一个典型例子。

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

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

相关文章

DVWA-Hight-DOM型XSS漏洞

首先打开hight模块的DVWA,并来到DOM型XSS漏洞处 首先试探 这里普通的js代码被过滤 再利用img试探 同样被过滤 这里后端代码不太可能将所有可能利用黑名单的形式全部写入过滤代码中&#xff0c;所以这里后端的过滤代码大概率是白名单&#xff0c;也就是除了这个下拉列表中的名单…

Excel5:自动化周报的制作

自动化周报的数据引用来源于8月成交数据-纯数值表格&#xff0c;因为8月成交数据表格中部分单元格中有vlookup函数&#xff0c;且存在跨表连接。 对于跨表连接的解释和说明&#xff1f; 首先打开我们之前做好的成交数据。打开后我们可以看到这上面出现了一个安全警告&#xff0…

“感恩同行 年度回馈” 中国善网开展“优秀公益伙伴”征集活动

2024年1月5日-1月15日&#xff0c;中国善网正式开展为期10天的2023年度“优秀公益伙伴”征集活动&#xff0c;此征集活动主要面向中国善网所有的注册会员单位。光阴荏苒&#xff0c;时光流逝&#xff0c;回首中国善网现已成立七年之久&#xff0c;截止目前为止&#xff0c;中国…

【ROS】小车机器视觉巡线行驶

摄像头 USB摄像头是最普遍的摄像头&#xff0c;如笔记本内置的摄像头&#xff0c;在ROS中使用这类设备很简单&#xff0c;可以直接使用usb_cam功能包驱动&#xff0c;USB摄像头输出的是二维图像数据。 usb_cam是针对V4L协议USB摄像头的ROS驱动包&#xff0c;核心节点是usb_cam…

web端播放rtsp视频流(摄像头监控视频)教程

文章目录 前言一、ffmpeg是什么&#xff1f;二、ffmpeg安装1.下载2.安装 三、node搭建websocket服务四、web客户端播放视频 前言 像海康大华一些摄像头或者直播源 为rtsp视频流&#xff0c;想在web上播放必须进行协议转换。已知一些方案例如rtsp转rtmp需要flash&#xff0c;现…

杨中科 ASP.NET Core 中的依赖注入的使用

ASP.NET CORE中服务注入的地方 1、在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builderServices中注入 2、在Controller中可以通过构造方法注入服 务。 3、演示 新建一个calculator类 注入 新建TestC…

伦茨Lenze驱动器维修EVS9324-ES D-31855

Lenze伦茨驱动器常见故障修理&#xff1a; 伦茨伺服驱动器维修&#xff0c;主电路上电检修注意事项&#xff1a;逆变模块与驱动电路在故障上有关联性。当逆变模块炸裂损坏后&#xff0c;驱动电路势必受到冲击而损坏&#xff1b;逆变模块损坏也可能正是因驱动电路的故障而造成的…

使用Android Compose实现网格列表滑到底部的提示信息展示

文章目录 概述1 效果对比1.1 使用添加Item的办法&#xff1a;1.2 使用自定义的方法 2. 效果实现2.1 列表为空时的提示页面实现2.2 添加Item的方式代码实现2.3 使用自定义的方式实现 3. UI工具类 概述 目前大多数的APP都会使用列表的方式来呈现内容&#xff0c;例如淘宝&#x…

PPT插件-布局参考-增加便携尺寸功能

PPT自带的尺寸为很久的尺寸&#xff0c;很多尺寸不常用&#xff0c;这里增加一些画册尺寸&#xff0c;用于PPT排版设计。 软件介绍 PPT大珩助手是一款全新设计的Office PPT插件&#xff0c;它是一款功能强大且实用的PPT辅助工具&#xff0c;支持Wps Word和Office Word&#x…

C#操作注册表

说明 今天用C#开发了一个简单的服务&#xff0c;需要设置成为自启动&#xff0c;网上有很多方法&#xff0c;放到启动运行等&#xff0c;但是今天想介绍一个&#xff0c;通过修改注册表实现&#xff0c;同时介绍一下操作注册表。 private void TestReg(){//仅对当前用户有效 H…

Easycode模板,基于官方提供的Mybatis-plus模板改造

目录结构 模板亮点 1、接口类默认继承实体类 实体类不做任何修改保证类与表统一 2、实体类涵盖多种注解 日期格式编码、Long类型转String、字段自动填充 3、自带insertOrUpdateBatch方法 导入方式 {"author" : "Wsong","version" : "1.2.8…

【Python机器学习】决策树——树的特征重要性

利用一些有用的属性来总结树的工作原理&#xff0c;其中最常用的事特征重要性&#xff0c;它为每个特征树的决策的重要性进行排序。对于每个特征来说&#xff0c;它都是介于0到1之间的数字&#xff0c;其中0代表“根本没有用到”&#xff0c;1代表“完美预测目标值”。特征重要…

微创新与稳定性的权衡

之前做过一个项目&#xff0c;业务最高峰CPU使用率也才50%&#xff0c;是一个IO密集型的应用。里面涉及一些业务编排&#xff0c;所以为了提高CPU使用率&#xff0c;我有两个方案&#xff1a;一个是简单的梳理将任务可并行的采用并行流、额外线程池等方式做并行&#xff1b;另外…

安科瑞ACX10S-YHW新能源智能电瓶车充电桩 户外充电桩 ——安科瑞 顾烊宇

1.产品简介 ACX10S-YHW新能源智能电瓶车充电桩 户外充电桩具有交流输出电源远程通断控制、 充电安全控制、电度计量、按时计费功能于一体的交流供电装置&#xff0c;该装置能通过电动自行车的车配充电器为电动自行车充电。支付方式可选择刷卡、扫码使用&#xff0c;设备内部可…

有什么不同种类的葡萄酒?

当大自然完成了它的工作&#xff0c;葡萄收获了&#xff0c;酒窖主人的任务就是把葡萄园里达到的高质量带给成品酒。《葡萄酒法》将优质葡萄酒分为三类&#xff0c;白葡萄酒、红葡萄酒和玫瑰红葡萄酒&#xff0c;葡萄品种和生产流程被精确定义。 白葡萄酒新鲜&#xff0c;果香浓…

STM32F103C8T6内部自带Bootloader模式之使用FlyMcu烧写程序

简介 实现自己的Bootloader前, 使用一下STM32内部自带的Bootloader对STM进行烧写 步骤 下载FlyMCU 参考 普中STM32-PZ6806L 使用FlyMcu串口烧录程序 Boot选择 Boot0->1 , Boot1->0 进到系统存储器 打开FlyMCU 1 选择串口波特率 2 选择程序 3 不需要使用辅助引脚 4 开…

【Codelab】如此简单!一文带你学会 15 个 HarmonyOS JS 组件

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ 目录 ✨ 前言 工程代码的结构 ​编辑 页面构建及组件使用详解 homepage代码文件 商品陈列页面 …

工业异常检测AnomalyGPT-Demo试跑

写在前面&#xff1a;如果你有大的cpu和gpu可以使用&#xff0c;直接根据官方的安装说明就可以&#xff0c;如果没有&#xff0c;可以点进来试着看一下我个人的安装经验。 一、试跑环境 NVIDIA4090显卡24g,cpu内存33G&#xff0c;交换空间8g,操作系统ubuntu22.04(试跑过程cpu…

FDA食品接触材料测试项目接触

1. FDA介绍&#xff1a; 美国食品和药品管理局&#xff08;FDA&#xff09;负责监管食品接触材料&#xff0c;此类材料必须经过检测&#xff0c;确保达到食品接触安全标准。美国联邦法规&#xff08;CFR&#xff09;第21章对此类材料作出具体规定&#xff0c;并将此类材料视…

spring boot 自动扫描Controller、Service、Component原理

项目里面为什么不加上ComponentScan("com.yym.*")注解&#xff0c;也能加载到子目录里面的Controller&#xff0c;Service&#xff0c;Component的bean呢&#xff1f; 启动类没有ComponentScan注解 SpringBootApplication public class BootStrap {public static v…