news 2026/8/17 23:18:40

C++的多态---虚函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++的多态---虚函数

虚函数 virtual

带有virtual关键词声明的是虚函数

virtualvoidfunction();

1、基类当中的虚函数必须实现

基类中可以有默认实现

virtualvoidmakeSound(){cout<<"动物发出声音"<<endl;}

此时,子类可以选择重写该方法,也可以不重写(直接继承父类的默认实现)。

也可以是空实现

virtualvoidmakeSound(){}

不可以不实现

virtualvoidmakeSound();//错误

只是普通虚函数(无 = 0):仅声明不实现(无函数体)是不合法的—— 编译器会通过编译,但链接阶段会报错(找不到函数的定义),因为普通虚函数要求必须有实现(哪怕是空实现)。
2、类可以实例化
但如果虚函数没有实现则不能调用该虚函数

3、可以让所有派生类是虚的
父类的虚函数特性会沿继承链传递 —— 只要父类(任意一层)标记了 virtual,后续子类的重写方法默认都是虚函数,无需重复标记;

4、如果使用指向对象的引用或指针来调用虚方法,程序将使用为对象类型定义的方法,而不使用为引用或指针类型定义的方法。这称为动态联编或晚期联编。这种行为非常重要,因为这样基类指针或引用可以指向派生类对象。—重要

5、如果定义的类将被用作基类,则应将那些要在派生类中重新定义的类方法声明为虚的。

override—只是增加编译器校验—防止隐藏

显式标记子类中的方法是对父类虚函数的重写
编译器校验:如果标注了 override 的方法并没有正确重写父类虚函数(比如方法名拼写错误、参数列表不一致),编译器会直接报错,避免隐藏的逻辑错误。
代码可读性:一眼就能看出该方法是重写父类的,提升代码可维护性。

voidmakeSound
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 23:18:38

网安基础学习 MySQL

SQL语句 1.update-更新数据库中的数据 UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition table_name: 要更新数据的表。 column1 value1, column2 value2, ...: 要更新的列及其新值。 condition: 更新条件。 2.delete-删除数据库中数据 D…

作者头像 李华
网站建设 2026/8/17 23:18:03

LLM Agent敏感度非单调性:为何大模型不等于高稳定Agent?

1. 项目缘起&#xff1a;一个反直觉的发现最近在折腾几个不同规模的LLM Agent项目时&#xff0c;我遇到了一个挺有意思的现象&#xff0c;让我停下来琢磨了很久。事情是这样的&#xff1a;我手头有几个任务&#xff0c;比如一个需要复杂逻辑推理的文本转SQL任务&#xff0c;还有…

作者头像 李华
网站建设 2026/8/17 23:17:07

一.文件处理命令-基本命令

文件处理命令-基本命令Linux 系统的日常使用和维护过程中&#xff0c;大部分场景是在系统的各个目录间进行切换&#xff0c;并查看目录中的内容&#xff0c;此时只需要几个非常简单的命令即可操作。绝对路径与相对路径绝对路径 绝对路径是指从根目录开始&#xff0c;到目标资源…

作者头像 李华
网站建设 2026/8/17 23:15:59

构建本土化LCA数据库:核心架构、数据挑战与选型实战指南

1. 项目概述&#xff1a;为什么我们需要自己的LCA数据库&#xff1f;如果你在制造业、环保咨询或者产品研发领域工作&#xff0c;最近几年肯定没少听到“碳足迹”、“生命周期评价&#xff08;LCA&#xff09;”这些词。无论是应对欧盟的碳边境调节机制&#xff08;CBAM&#x…

作者头像 李华
网站建设 2026/8/17 23:14:33

2026年AI外呼系统机器人进化与实测:从“机械播报”到“智能交互”

一、186亿市场背后的技术拐点2026年&#xff0c;中国智能外呼市场规模已突破186亿元&#xff0c;年复合增长率达23.7%&#xff0c;规模以上企业AI外呼系统渗透率已达63.5%。但比数字更值得关注的是&#xff0c;行业正经历一场从底层逻辑到交互体验的全面重构——AI外呼正在从“…

作者头像 李华
网站建设 2026/8/17 23:14:00

Linux grub2‑set‑default 命令:修改 GRUB2 默认启动内核 / 系统项

一、命令简介 grub2‑set‑default 是一个用于设置 GRUB2 引导加载程序默认启动项的 Linux 命令。它允许系统管理员指定系统启动时自动选择的内核或操作系统入口。该命令特别适用于多内核安装或双系统环境&#xff0c;可以确保系统在重启后自动进入预设的启动项。 重要前提&a…

作者头像 李华