【C++】虚函数

2023年8月23日,周三上午


目录

  • 虚函数
  • 在派生类中重写虚函数
  • 纯虚函数
  •  示例程序

虚函数

  • 在函数返回值前面加上关键字virtual
  • 虚函数必须在类中声明,否则会报错“[Error] 'virtual' outside class declaration”
class Base {
public:virtual void func(); // 声明虚函数
};

在派生类中重写虚函数

  • 使用关键字override来明确指出这是对基类虚函数的重写
  • 在派生类中重新定义虚函数,使用相同的函数签名(函数名和参数列表)
class Derived : public Base {
public:void func() override; // 重写虚函数
};

虚函数可以在基类中有默认实现,派生类可以选择是否重写该函数。

纯虚函数

通过把0赋值给虚函数来声明纯虚函数

class Base {
public:virtual void func()=0; // 声明纯虚函数
};

在基类中声明纯虚函数后,派生类如果不重写(override)该函数,

则派生类将被认为也是一个抽象类

抽象类和普通类有什么区别?

抽象类不能被实例化,即不能创建抽象类的对象。只能通过派生类来创建对象。

而普通类可以直接实例化,通过类名创建对象。

 示例程序

#include<iostream>class Animal{
public:virtual void speak();
};class Dog:public Animal{
public:void speak() override{std::cout<<"汪汪"<<std::endl;}
};class Cat:public Animal{
public:void speak() override{std::cout<<"喵喵"<<std::endl;}
};int main(){Dog d;d.speak();Cat c;c.speak();
}

 

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

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

相关文章

Linux——初始

linux是一个操作系统&#xff0c;目前主流就是在服务器后端被选作服务器的操作系统来使用&#xff0c;所以我们没有直接接触到。 Linux的历史和概念 先是国家投钱给科研技术人员&#xff0c;科研技术人员将科研成果部分投入生活用品卖给老百姓&#xff0c;老百姓购买产品同时还…

使用Termux在安卓手机上搭建Hexo博客网站,并发布到公网访问

文章目录 1. 安装 Hexo2. 安装cpolar内网穿透3. 公网远程访问4. 固定公网地址 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…

SpringBoot利用ConstraintValidator实现自定义注解校验

一、前言 ConstraintValidator是Java Bean Validation&#xff08;JSR-303&#xff09;规范中的一个接口&#xff0c;用于实现自定义校验注解的校验逻辑。ConstraintValidator定义了两个泛型参数&#xff0c;分别是注解类型和被校验的值类型。在实现ConstraintValidator接口时&…

RabbitMQ介绍

RabbitMQ的概念 RabbitMQ 是一个消息中间件&#xff1a;它接受并转发消息。你可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递员最终会把你的快递送到收件人那里&#xff0c;按照这种逻辑 RabbitMQ 是 一个快递…

SpringBoot - 两种方式刷新配置信息

一、第一种方式 ​ConfigurationProperties​不能自动刷新&#xff0c;需要手动调用contextRefresher.refresh()方法来刷新配置。 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component…

geacon_pro配合catcs4.5上线Mac、Linux

我的个人博客: xzajyjs.cn 一些链接 Try师傅的catcs4.5项目: https://github.com/TryGOTry/CobaltStrike_Cat_4.5&#xff0c;最新版解压密码见&#xff1a;https://www.nctry.com/2708.html geacon_pro: https://github.com/testxxxzzz/geacon_pro BeaconTool.jar: https:/…

qt显示图片并转换成灰度图及伪彩图

写了个程序&#xff0c;可在途图片&#xff0c;并切换成灰度图及伪彩图显示&#xff0c;主要代码如下&#xff1a; #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainW…

mysql 8.0 窗口函数 之 分布函数 与 sql server (2017以后支持) 分布函数 一样

mysql 分布函数 percent_rank&#xff08;&#xff09; &#xff1a;等级值 百分比cume_dist() &#xff1a;累积分布值 percent_rank&#xff08;&#xff09; 计算方式 (rank-1)/(rows-1)&#xff0c; 其中 rank 的值为使用RANK()函数产生的序号&#xff0c;rows 的值为当前…

TDesign中后台管理系统-用户登录

目录 1 创建用户表2 开发后端接口3 测试接口4 修改登录页面调用后端接口最终效果总结 中后台系统第一个要实现的功能就是登录了&#xff0c;我们通常的逻辑是让用户在登录页面输入用户名和密码&#xff0c;调用后端接口去验证用户的合法性&#xff0c;然后根据接口返回的结果进…

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4 ELMOBERTERNIE![在这里插入图片描述](https://img-blog.csdnimg.cn/274e31d0f8274c748d05abe2ec65fc73.png)GroverXLNetGPTMASSUniLMELECTRARoBERTaT5C4ELMO BERT

小程序定位到 胶囊的三个点大概中间

话不多说&#xff0c;先上效果图 这个功能实现思路: 首先先拿到这一张整图(快捷&#xff0c;精确)然后获取整个导航栏高度(自定义导航栏,非自定义导航栏忽略这一步)获取三个点的做偏移量&#xff0c;把高度和偏移量给到一个定位到盒子&#xff0c;这个盒子里就放这个图片&…

蓝蓝设计-UI设计公司案例-HMI列车监控系统界面设计解决方案

2013年&#xff0c;为加拿大庞巴迪(Bombardier)设计列车监控系统界面设计。 2015-至今&#xff0c;为中车集团旗下若干公司提供HMI列车监控系统界面设计,综合考虑中车特点、城轨车、动车组的不同需求以及HMI硬键屏和触摸 屏的不同操作方式&#xff0c;重构框架设计、交互设计、…

Java【HTTP】什么是 Cookie 和 Session? 如何理解这两种机制的区别和作用?

文章目录 前言一、Cookie1, 什么是 Cookie2, Cookie 从哪里来3, Cookie 到哪里去4, Cookie 有什么用 二、Session1, 什么是 Session2, 理解 Session 三、Cookie 和 Session 的区别总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; …

Hadoop运行模式

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 文章目录 Hadoop运行模式本地运行模式&#xff08;官方WordCount&am…

三次握手四次挥手

三次握手和四次挥手是什么 TCP 是面向连接的协议&#xff0c;所以使用 TCP 前必须先建立连接&#xff0c;而建立连接是通过三次握手来进行的&#xff0c;断开连接是通过四次挥手来进行的。 建立连接&#xff1a;三次握手 关于下方用到的SYN ACK标志位&#xff0c;请点击此处…

记一次项目内存优化--内存泄漏

需求–内存泄漏优化&#xff0c;PSS有所下降&#xff0c; OOM率减少 主要是与某个版本作基准进行对比&#xff08;一般是最新版本的前一个版本作原数据&#xff09;&#xff0c;优化后&#xff0c;PSS有所下降&#xff0c;线上OOM率减少&#xff08;Bugly版本对比&#xff09;…

ERP系统解析:全面了解企业资源规划系统

在当今快节奏的商业环境中&#xff0c;有效的企业资源计划&#xff08;Enterprise Resource Planning&#xff0c;简称ERP&#xff09;系统对于组织的成功运营至关重要。ERP系统是一种集成管理软件&#xff0c;通过整合各个部门的信息和流程&#xff0c;实现资源的高效利用和运…

死锁的典型情况、产生的必要条件和解决方案

前言 死锁&#xff1a;多个线程同时被阻塞&#xff0c;他们中的一个或全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 目录 前言 一、死锁的三种典型情况 &#xff08;一&#xff09;一个线程一把锁 &#xff08;二&#xff09;…

单片机 (一) 让LED灯 亮

一&#xff1a;硬件电路图 二&#xff1a;软件代码 #include "reg52.h"#define LED_PORT P2void main() {LED_PORT 0x01; // 0000 0001 D1 是灭的 } #include "reg52.h" 这个头文件的作用&#xff1a;包含52 系列单片机内部所有的功能寄存器 三&#…

一种特殊的NC文件转TIF——知道每个像元的坐标值怎么转为TIF

之前写过一篇文章&#xff0c;介绍了NetCDF文件格式&#xff0c;并详细讲解了如何使用Python对NetCDF文件进行读写操作&#xff0c;进而介绍了NetCDF文件的地理参考&#xff0c;最后以两个数据为例讲解了怎么将NetCDF格式的数据转GeoTIFF格式的数据。 但是上次介绍的NC文件的地…