C++的函数覆盖、隐藏与重载理解

浅析C++重载覆盖隐藏以及虚函数 C++里面重载覆盖隐藏的概念经常被提及,在很多C++测试题目里面也一直有遇到,每次做这类型的题目总感觉没有彻底搞清楚,故在这里做一个总结,以后遇到类似的问题能够轻易解决。     首先来看看>作者对几个概念的描述: 重载: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual关键字可有可无。 覆盖: (1)不同的范围(父子类中) ( 阅读详情
覆盖是指派生类函数覆盖基类函数,特征是: 
(1)不同的范围(分别位于派生类与基类); 
(2)函数名字相同; 
(3)参数相同; 
(4)基类函数必须有virtual 关键字。
 
“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: 
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。 
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

隐藏后, 即在子类中看不到父类的函数。

函数重载:函数名相同,返回值类型和参数列表至少一个不同

派生类中的重载方法,在基类是不能调用的

函数重载和虚函数都能实现对象的多态特性,但是函数重载只能实现静态的多态,也就是在编译时多态,即编译器会给重载的函数在编译时加上不同的前缀,是函数名在运行时不同。而虚函数可以实现动态多态,即运行时多态,但是虚函数实现需要增加额外的虚函数指针等,会增加相应空间。

C++继承详解(二):派生类的构造与析构,理解函数的重载、隐藏与覆盖 派生类的构造函数 、派生类的析构函数 、函数的重载、隐藏与覆盖 阅读详情

相关推荐

点云数据增强及预处理

数据增强: 1. random world flip:沿着x或者y轴,翻转点云 点云的x或者y,要翻转 3d box中心的x或者y,要翻转 3d box的朝向要翻转 point segmentation label,点云的相对顺序没有发生变化 2. random_world_rotation:沿着点云原点,旋转点云 点,x,y,绕z轴旋转 3d box,绕z轴旋转,中心和朝向都要变化 point segmentation label,点云的相对顺序没有发生变化 3. random_world_scaling

huang_victor的博客 4011

C++STL中vector容器 assign()函数的用法

http://blog.sina.com.cn/s/blog_7b3a697301014aam.html assign函数: 函数原型: void assign(const_iterator first,const_iterator last); void assign(size_type n,const T& x = T()); 功能: 将区间[first,last)的元素赋值到当前

xlm289348的专栏 7万+

具身智能:从理论突破到场景落地的全解析

具身智能(Embodied Intelligence)是人工智能与机器人学深度融合的前沿领域,其核心在于通过物理实体与环境的动态交互实现智能行为。区别于传统 AI 的 “离身性”(如语音助手仅依赖数据输入),具身智能强调 “智能体通过身体感知世界并反作用于环境”,形成 “感知 - 决策 - 行动” 的闭环。例如,能自主避障的配送机器人、可精准抓取异形物体的机械臂,均通过传感器网络与环境实时互动,在试错中优化行为策略。

LeeKumaの技术Note 2681

关于C++覆盖与复写

关于c++的覆盖与复写,写了个测试程序,以明确一些概念。发此博客以记录。 1.c++中的多态只是发生在指针或者引用上,对象赋值不存在多态。(见例子中的funcRecoverAssignTest()) 2.对象赋值亦会赋值基类变量。(同样见funcRecoverAssignTest()) 3.当不声明成员函数为多态时(virtual关键字),子类签名相同的成员函数形成覆盖。此时基类指针

arrowyi_gbd的专栏 1870

Speedtree学习笔记(案例)——拥有多种材质的植物如何导入使用(以草为例)

注:Speedtree无论保存还是导入模型其存储路径不可有中文。 第一步拆分草的模型 根据所需的材质去拆分(例:假若草的果实,茎秆和叶子是不同的材质那么就需拆分为三份;假若画的全部颜色及材质一样就没有必要去拆分模型) 第二步导入草的模型 在Mesh面板中依次导入草的模型——Do nothing additional right now 第三步扩大草的生长区域范围(可省略)...

L人青的博客 5722

元数据及数据仓库相关概念

文章目录元数据(metadata)的概念Data about Data定义技术元数据业务元数据总结数据仓库ODS简单的理解为 Operational Data Store, 运营数据仓储 数据整合层(也叫做数据缓冲层)EDW简单理解为 Enterprise Data Warehouse, 企业数据仓库ODS与EDW之间的差异使用角色数据来源数据获取性能和及时性数据架构数据共享能力数据系统提供应用数...

frone的专栏 3139

vertor的assign用法

vector::assign //用来构造一个vector的函数,类似于copy函数 void assign( size_type _Count, const Type& _Val); //_Count指要构造的vector成员的个数,   _Val指成员的数值,他的类型必须与vector类型一致!  template  void assign( InputIterator _Fi

程序猿的梦想---牛逼的程序猿 1567

Jetbrains IDE 配置上Gemini Code 插件,让你的的编程高效起飞~

Gemini Code Assist是 Google 家产品,基座模型为最新的Gemini 2.5 Pro。本篇实践了在 WebStrom 中Gemini Code Assist插件的高效编程。

2301_76993408的博客 4595

C++ 函数覆盖

在派生类和基类中都定义了相同的函数。如果使用派生类的对象调用这个函数,派生类的函数就会被执行。这在 C++ 中称为。派生类中的函数覆盖基类中的函数。示例 1:C++ 函数覆盖。

三千思的博客 849

服务部署之配置WSUS更新服务(基于Windows配置 Server 2022)

服务部署之配置WSUS更新服务(基于Windows配置 Server 2022)

2301_77192876的博客 2214

基于SAGE算法的宽带信道参数估计算法的MATLAB仿真

本文将介绍如何使用MATLAB进行SAGE算法的仿真,以便更好地理解和应用该算法。SAGE算法是一种基于最大期望(Expectation-Maximization)方法的迭代估计算法,用于估计未知的参数。在宽带信道参数估计中,SAGE算法通过迭代优化来估计信道的传输函数。总结起来,本文介绍了如何使用MATLAB进行基于SAGE算法的宽带信道参数提取算法的仿真。通过以上步骤,我们可以得到估计的信道响应,并与真实信道响应进行比较。此外,SAGE算法还可以与其他信道估计算法相结合,以提高估计的准确性和性能。

CodeRoarX的博客 1075

c++同名函数----重载、隐藏、覆盖

c++同名函数----重载、隐藏、覆盖

ken2232的博客 2857

Python爬虫selenium验证-中文识别点选+图片验证码案例

环境对模型进行训练,参考:https://github.com/sml2h3/dddd_trainer。能识别,但是发现默认识别率有点低,想要提升识别率,可以搭建。截图每个字符,并基于ddddocr识别。根据坐标,在验证码上进行点击。

dme.的博客 2165

C++类成员函数重载、覆盖、隐藏的一些理解

这三者之间的关系也不是特别复杂,就是感觉特别绕,根据个人理解总结一下吧。 函数名相同的类非静态成员函数之间,具有如下关系: 重载(同一个类内,函数名相同,参数不同,返回值无限制): 1,同一个类内 2,函数名相同、参数不同 3,有无virtual关键字都可以 覆盖(具有运行时多态): 1,不同类(一个在父类、一个在子类) 2,函数名相同、参数相同 3,父类中函数必须有virtua...

jigetage的专栏 286

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++重载、隐藏与覆盖:深入理解函数查找与多态机制

在C++面向对象编程中,函数重载、隐藏和覆盖是三个核心机制,它们共同构成了多态性和代码复用的基础。函数重载允许在同一作用域内定义多个同名函数,通过参数列表的差异实现编译时的静态绑定,编译器根据最佳匹配原则进行重载决议。隐藏则发生在继承体系中,当派生类定义了与基类同名的成员函数时,无论参数是否相同,都会屏蔽基类的同名函数,这是名字查找规则的结果。覆盖是实现运行时多态的关键,要求基类函数声明为virtual,且派生类函数签名严格匹配,通过虚函数表实现动态绑定。理解这些机制对于编写高效、可维护的C++代码至关重要

weixin_33885676的博客 370

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++57个入门知识点_38_39 函数覆盖、重载、隐藏的调用秘笈-实践中理解(按照函数隐藏-->函数重载-->函数覆盖顺序进行检查)

本篇主要介绍C++中函数覆盖、重载、隐藏如何判断什么时候被使用? 实际使用过程中很少会出现几种类型一起出现的情况,因此作为理解及未来细品之用。 1.总结: 2.学习视频地址: 函数覆盖、重载、隐藏的调用秘笈1 函数覆盖、重载、隐藏的调用秘笈2 3.学习笔记: #include <iostream> class Base { public: virtual void Handle1(float x) { printf("Base::Handle1(float)"); } void

分享学习成长历程,Winter is coming! 1114

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

如何区分C++中函数的重载、覆盖和隐藏

区别关键在于:发生范围和virtual关键字。 一、重载发生的条件: (1) 相同的范围(在同一个类中); (2) 函数名字相同; (3) 参数不同(个数或类型不同); (4)与 virtual关键字无关。 二、覆盖发生的条件有: (1) 不同的范围

987

类员函数的重载、覆盖和隐藏

重载的特征: (1)相同的范围(在同一个类中) (2)函数名相同 (3)参数不同 (4)virtual关键字可有可无 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类) (2)函数名相同 (3)参数相同 (4)基类函数必须有vitrual关键字 隐藏的特征: (1)不同的范围(分别位于派生类与基类) (2)函数名相同 (3)参数可相同也可不

marshhu的专栏 487

C++ 重载 覆盖 隐藏

成员函数的重载、覆盖与隐藏 成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚 概念,否则错误将防不胜防。 8.2.1 重载与覆盖 成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与

wang73ying的专栏 518

重载,覆盖和隐藏区别

1.重载(overload)的特征: a).几个函数如果是重载,那么他们的作用域相同,即在同一个范围内。【例如:在同一个类中,或者在同一个全局中】 b).函数名字必须相同,但是参数必须不同【个数可以不同,类型也可以不同】 c).virtual关键字可有可无. 【重载的作用就是同一个函数有不同的行为】 2.覆盖(override)的特征: a).覆盖指的是派生类的函数覆盖基类的函数,因此

kkForWork的专栏 574

c++ 重载 覆盖 隐藏

c++ 重载 覆盖 隐藏的区别和执行方式 成员函数被重载的特征 (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。  覆盖是指派生类函数覆盖基类函数,特征是 (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。 “隐藏”是

xiliang_pan的专栏 815

C++函数重载、覆盖与隐藏的区别

一.成员函数的重载,其特点: (1)在同一个类中; (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。   二.覆盖是指派生类函数覆盖基类函数,其特点: (1)位于派生类与基类中; (2)函数名字相同; (3)参数相同; (4)基类函数必须有virtual 关键字。 扩展理解: 1.加virtual关键字的函数是虚函数,它是在基

1431

C++中覆盖、重载、隐藏的区别(写给菜鸟们)

话说,我也是菜鸟,在我彻底了解了覆盖、重载、隐藏区别的时候,我把网上大哥们冗余的赘述加以精简,达到我这种菜鸟级别看的动,并且不嫌烦的程度。       下面对比一下:          一、重载       在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载, ① double calcu

u013052732的专栏 317

C++中函数覆盖 隐藏 重载区别

C++在继承这一节涉及到函数覆盖 隐藏 重载等,如何区别它们呢? 首先函数覆盖的条件:基类函数必须是虚函数                                       发生覆盖的两个函数要分别位于派生类和基类中                                      函数名称和参数列表完全相同 其次函数隐藏主要有以下两种情况:

小村长技术blog 2256

c++的重载、覆盖和遮蔽(隐藏)

C++的重载、覆盖和遮蔽(隐藏) 为了说明这三者的区别,引入函数签名的概念 函数签名主要包括1、函数名;2、参数的个数、数据类型和顺序 但是注意,函数签名不包括返回值 1、重载 在同一个类中,或者在顶层函数(与main函数同层)中,如果 (1)函数名相同 (2)函数签名不同 则就是函数重载。函数重载对函数返回值无要求,即返回值可以相同也可以不相同。 例如:函数int functi

雪水 4445

C++成员函数的重载、覆盖与隐藏

 成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖:派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual

xujianxin's 优快云 Blog 1万+
上一篇: 对于牛客网的多样例循环输入
下一篇: 动态链接库与静态链接库
mp3Record
博客等级 码龄10年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值