C++——虚函数

C++——虚函数

virtual关键字

在C++中, virtual 和 override 关键字用于支持多态,尤其是在涉及类继承和方法重写的情况下。正确地理解和使用这两个关键字对于编写可维护和易于理解的面向对象代码至关重要。

virtual关键字

1.使用场景:在基类中声明虚函数。

  1. 目的:允许派生类重写该函数,实现多态。

  2. 行为:当通过基类的指针或引用调用一个虚函数时,调用的是对象实际类型的函数版本。

  3. 示例

class Base {public:virtual void func() {std::cout << "Function in Base" << std::endl;}
};

override 关键字

  1. 使用场景:在派生类中重写虚函数。

  2. 目的:明确指示函数意图重写基类的虚函数。

  3. 行为:确保派生类的函数确实重写了基类中的一个虚函数。如果没有匹配的虚函数,编译器会报错。

  4. 示例

class Derived : public Base {public:void func() override {std::cout << "Function in Derived" << std::endl;}
};

例程

#include <iostream>using namespace std;class Vehicle{ //交通工具,车,抽象的概念
public:string coutry;double price;Vehicle(){}virtual ~Vehicle(){};Vehicle(string coutry,double price){cout<<"基类构造函数被调用"<<endl;this->coutry=coutry;this->price=price;};//基类中声明了一个虚函数virtual void run(){cout << "车跑起来了" << endl;}void stop();
};class Bike:public Vehicle
{
public:void run() override{cout<<"脚踩自行车"<<endl;}
};int main()
{Bike b;b.run();return 0;
}

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

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

相关文章

24.云原生ArgoCD高级之数据加密seale sealed

云原生专栏大纲 文章目录 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami Sealed Secrets工作流程安装sealed-secrets和kubeseal安装sealed-secrets-controller安装kubeseal通过kubeseal将sealed-secrets公钥拿出来通过kubeseal加密secrets替换kustomize下secret为…

Linux进程信号处理:深入理解与应用(1)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;its 6pm but I miss u already.—bbbluelee 0:01━━━━━━️&#x1f49f;──────── 3:18 &#x1f504; ◀️…

关于破解IDEA后启动闪退的问题

问题描述&#xff1a;2023.1启动不了&#xff0c;双击桌面图标&#xff0c;没有响应。 解决办法&#xff1a; 打开C:\Users\c\AppData\Roaming\JetBrains\IntelliJIdea2023.1\idea64.exe.vmoptions 这个文件。 内容如下所示&#xff1a; 删除红框的数据以后&#xff0c;再登录…

基于springboot校园二手书交易管理系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括乐校园二手书交易管理系统的网络应用&#xff0c;在外国二手书交易管理系统已经是很普遍的方式&#xff0c;不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统…

【Spring连载】使用Spring Data访问Redis(十四)----Redis Repositories

【Spring连载】使用Spring Data访问Redis&#xff08;十四&#xff09;----Redis Repositories 一、Core concepts二、Defining Repository Interfaces三、Creating Repository Instances四、Usage五、Object Mapping Fundamentals六、对象到Hash映射Object-to-Hash Mapping七、…

JC/T 2569-2020 建筑门窗用木型材检测

木型材指使用天然木材或以天然木材为基材加工成的指接材、集成材、重组木等为原料&#xff0c;沿纤维方向加工出一定尺寸槽口的们穿框扇杆件。 JC/T 2569-2020建筑门窗用木型材检测: 检测项目 测试方法 外观 JC/T 2569 尺寸 JC/T 2569 剪切强度 GB/T 26899 剥离率 GB…

搜狗开源框架Workflow网络模型分析

workflow是一个比较轻量化的后端服务框架&#xff0c;支持Linux/Mac/Windows主流平台&#xff0c;其网络模块是框架的核心。在workflow-windows分支上可以看到对windows的IOCP的封装&#xff0c;对于学习windows IOCP网络编程有很好的启发意义。因此&#xff0c;有必要对该网络…

2024-02-01(Hive)

1.我们通过忘Hive中执行SQL语句&#xff0c;Hive会帮我们将SQL语句翻译成MapReduce在底层去做分布式的计算。 2.Hive看似处理的是mysql的表&#xff0c;但实际上处理的是HDFS中的文本文件。 3.Hive中创建的库和表的数据&#xff0c;存储在HDFS中&#xff0c;默认存放在&#…

类银河恶魔城学习记录1-1 Player状态机的搭建 P28上

对状态机的介绍 什么是状态机&#xff1f;一篇文章就够了 - 知乎 说实话&#xff0c;目前并不能深入理解状态机的奇妙之处&#xff08;当然&#xff0c;我觉得状态机作为教程的重要组成部分是不得不理解的&#xff0c;所以以下我会对游戏教程内的状态机做一些我认为的解释&am…

加速知识检索:伯克利DeepMind联合研究,RaLMSpec让语言模型服务飞速提升2-7倍!

近年来&#xff0c;随着大型语言模型&#xff08;LLM&#xff09;的出现&#xff0c;在多样化的 NLP 任务上取得了令人瞩目的成果。然而&#xff0c;知识密集型任务仍是 NLP 领域中的一项挑战&#xff0c;因为这些任务不仅要求模型要理解和生成自然语言&#xff0c;还要能够访问…

Tomcat在Java web的应用

Tomcat在Java web的应用 本来这篇博客顺应之前的内容&#xff0c;应该是需要写Tomcat的简介、基本使用、配置和部署项目、Web的项目结构、创建MavenWeb、idea本地集成以及Tomcat的Maven插件的笔记内容&#xff0c;但是总觉得没必要&#xff0c;因为这些内容网上肯定很多了&…

移动机器人激光SLAM导航(四):GMapping SLAM 篇

参考引用 GMapping ROS-Wiki从零开始搭二维激光SLAMGMapping 漫谈小白学移动机器人机器人工匠阿杰wpr_simulation 移动机器人激光SLAM导航&#xff08;文章链接汇总&#xff09; 1. GMapping 1.1 FastSLAM 问题分解 概率论相关公式 1. 条件概率公式&#xff1a; p ( x , y ) …

C语言的基础学习

C语言的变量 ## C语言中的变量 在C语言中,变量是对程序中数据所占内存空间的一种抽象定义。定义变量时,用户定义变量的名、变量的类型,这些都是变量的操作属性。不仅可以通过变量名访问该变量,系统还通过该标识符确定变量在内存中的位置 [❷](https://www.dotcpp.com/cour…

将链表反转

反转链表在解决需要从尾节点开始遍历到头节点的地方很实用&#xff0c;是一种常用的解题技巧。在反转时&#xff0c;我们可以考虑从前向后反转和从后向前反转两种方式。 法一&#xff1a;递归 每次将链表的头节点的下一个节点作为新的头节点&#xff0c;然后对剩余部分调用递归…

深度学习入门笔记(五)前馈网络与反向传播

接着上一节,本节讲解模型自我学习的数学计算过程究竟是怎么样的。 5.1 前馈网络 一个最简单的前馈神经网络如图所示,对于每一个隐藏层,输入对应前一层每一个节点权重乘以节点输出值,输出则是经过激活函数(例如sigmoid函数)计算后的值。 在这样的网络中,输入的数据 x 经…

HSMES中的计划管理

MES&#xff08;生产制造执行系统&#xff09;&#xff0c;旨在帮助制造企业实现高质量和高效率生产&#xff0c;通过实时监控生产过程&#xff0c;智能的生产计划排程&#xff0c;灵活的工艺设置&#xff0c;进而实现企业的数字化生产。对于生产计划的管控是其中不可或缺的一环…

jQuery 获取并设置 CSS 类 —— W3school 详解 简单易懂(十五)

通过 jQuery&#xff0c;可以很容易地对 CSS 元素进行操作。 jQuery 操作 CSS jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些&#xff1a; addClass() - 向被选元素添加一个或多个类removeClass() - 从被选元素删除一个或多个类toggleClass() - 对被选元素进行添…

Python 抽象类

在Python中,抽象类是一种特殊的类,不能直接实例化,而是被用作其他类的基类。它定义了一组方法的接口,但没有具体的实现。子类必须实现这些方法才能实例化。 要创建一个抽象类,您需要使用abc模块中的ABC(Abstract Base Class)类,并通过将metaclass设置为ABCMeta来指定它…

小白水平理解面试经典题目_数组类Leetcode 412. Fizz Buzz【数学解法】

412 FizzBuzz 小白渣翻译&#xff1a; 给定一个整数 n &#xff0c;返回一个字符串数组 answer &#xff08;从 1 开始索引&#xff09;&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 能被 3 和 5 整除。answer[i] “Fizz” 如果 i 能被 3 整除。answer[i]…

8. 实现VLAN间的通信

文章目录 一. 初识VLAN通信1.1. VLAN的概述1.2. Dot1q 终结子接口(单臂路由 )1.3. VLANIF接口 二. 实验专题2.1. 实验1&#xff1a; Dotlq 终结子接口2.1.1. 实验目的2.1.2. 实验拓扑图2.1.3. 实验步骤&#xff08;1&#xff09;配置PC机的网络&#xff08;2&#xff09;交换机…