【C++】虚函数

2023-11-10

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();
}

 

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

【C++】虚函数 的相关文章

随机推荐

  • 刷脸支付驱动新零售构建全新的消费场景

    毋庸置疑 刷脸支付是一场属于商家与用户的双赢技术 逐渐成为零售行业新的增长点 不但改变着人们的生活方式 支付也将更方便 更快捷 更安全 同时还能为商家带来更多的便利 较大地降低了人工和管理成本 除此之外 3D视觉作为AI感知核心技术 还可以
  • 矩阵图有何用处?XMind完美展示多对多对象间的关系!

    矩阵图是思维导图中运用非常广泛的图形 通俗来说 它其实就是一个表格 但却能非常紧凑的展现出对象之间的多对多关系 它提供的维度至少比其他树形图多一个维度 矩阵图 下图称为MD 表示多对多关系 但是 如何使MD与XMind中的其他图表区别开来
  • 【git】git报错:git checkout xxx error: The following untracked working tree files would be overwritten b

    git报错 git checkout xxx error The following untracked working tree files would be overwritten by checkout README md Pleas
  • SpringBoot实现导入功能

    实体类 gt MeetRestaurantArrange package com krt meet entity import com baomidou mybatisplus annotation TableName import com
  • 小米手机如何安装fiddler证书

    在手机浏览器输入ip port 1 找到设置 2 更多设置 3 系统安全 4 从存储设备安装 以上问题可以解决在fiddler抓包https的问题
  • python 类的__str__方法

    转载自文章 str 方法 当使用print输出对象的时候 只要类中自己定义了 str self 方法 那么就会打印从在这个方法中return的数据 例如 class Cat 定义一个猫类 def init self new name new
  • OpenCV移植到ARM全过程-III

    gt 目录 在上一篇文章里面我们已经交叉编译好了opencv的第三方依赖库 并且解压好了opencv源码 现在开始正式的交叉编译opencv源码 进入opencv源码目录下 上一篇在源码的的根目录下建立了2个文件夹build和output
  • 基于Spring-Data-Elasticsearch 优雅的实现 多字段搜索 + 高亮 + 分页 + 数据同步✨

    持续创作 加速成长 这是我参与 掘金日新计划 10 月更文挑战 的第17天 点击查看活动详情 系列说明 本系列文章基于我的开源微服务项目 校园博客 进行分析和讲解 所有源码均可在GitHub仓库上找到 系列文章地址请见我的 校园博客专栏 G
  • LinearEyeDepth 定义

    UnityCG cginc中原函数如下 Z buffer to linear 0 1 depth 0 at eye 1 at far plane inline float Linear01Depth float z return 1 0 Z
  • 重学STM32---(六)DAC+DMA+TIM

    这两天复习了DAC DMA再加上把基本定时器TIM6和TIM7看了一下 打算写一个综合点的程序 就在网上找了一些关于DAC DMA和定时器相关的程序 最终打算写了输出正弦波的程序 由于没有示波器 也就不能显示出效果了 本来是打算用软件调试看
  • linux获取ipv6公网ip,Linux 获取IPv6网关

    基于hisi3536实现的 ubuntu下只要找到对应的配置文件 ipv6 route 即可 include include include include include include include include include i
  • #ifdef #if defined #ifndef和#if !defined区别 详解-覆盖所有说明

    首先 让我们先从头文件开始 在很多头文件里 我们会看到这样的语句 ifndef MYHEADFILE H define MYHEADFILE H 语句 endif MYHEADFILE H 为了避免同一个文件被include多次 我们常使用
  • 浅谈构建iOS一个动态化页面的思路

    随着产品的不断迭代 功能的不断完善 我们的项目的中会给用户分成区域呈现出越来越多的东西 咕咚的精选给用户一种信息广场的概念 让用户可以快速的抵达我们感兴趣的点 既然如此 那么每一个项目的综合信息的页面经常会被改动 出现位置的调整 出现新的模
  • STM32中断与事件的理解

    推荐文档 事件与中断区别 目录 事件与中断区别 举例 膝跳反射 人们看见火灾之后打119 事件与中断区别 很多时候 我们经常使用到中断 但是STM32还有一个东西叫做事件 那么这个事件是什么呢 看了上面这个文档我们知道 1 中断是需要CPU
  • MyBatis的Mapper接口以及Example的实例函数及详解

    一 mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample UserExample example thorws SQLException 按条件计数 int deleteByPr
  • c#中函数参数中的this(扩展方法)

    首先和大家说一下 最近参加实习了 所以更新可能比较少 而且对于大家提出的问题可能不能及时回复 希望大家理解 在我看完大佬的项目之后 感觉自己啥也不会 于是不出意外 之后再csdn上我就会更新我在项目中遇到的问题 希望对大家也有些帮助 c 函
  • Web前端vueDemo—实现简单计数器功能(一)

    系列文章目录 Web前端vueDemo 实现简单计数器功能 一 Web前端vueDemo 实现图片切换功能 二 Web前端vueDemo 实现记事本功能 三 Web前端vueDemo 实现天气预报功能 四 文章目录 系列文章目录 前言 一
  • mysql数据库登录失败次数_mysql数据库限制多次登录失败,限定用户重试时间

    前言 最近的项目开始进行安全测试 其中有一个安全问题是这样的 应该增加用户登录失败处理功能 限制非法登录次数 建议是增加mysql数据库的登陆失败的锁定功能 相信大家也都会遇到这样的问题 在这里写一下 方便大家直接使用 设置方法 登录mys
  • 封装、继承、多态 详解

    面向对象的三个基本特征 封装 继承 多态 1 封装 1 封装是实现面向对象的第一步 封装就是将数据或函数等集合在一个单元中 类 被封装的对象通常被称为抽象数据类型 2 类具有封装性 类能够把数据和算法 操作数据的函数 组合在一起 构成一个不
  • 【C++】虚函数

    2023年8月23日 周三上午 目录 虚函数 在派生类中重写虚函数 纯虚函数 示例程序 虚函数 在函数返回值前面加上关键字virtual 虚函数必须在类中声明 否则会报错 Error virtual outside class declar