C++中的“三重”

在这里插入图片描述

博文内容:重载、重定义(隐藏),重写(覆盖)


三重区别及联系

  • 概念
  • 联系及区别
    • 1、作用域
    • 2、函数要求


概念

重载

函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同。
首先就是对于重载的解释,函数名相同但是参数不同。

class Base
{
public:Base(){cout << "Base()" << endl;}void Func(){cout << "Func()" << endl;}void Func(int){cout << "Func(int)" << endl;}//err//int Func(int)//{//}//~Base()//{//	cout << "~Base()" << endl;//}private:};

在这里插入图片描述

重定义

重定义 (redefining)也叫做隐藏: 子类重新定义父类中有相同名称的非虚函数 ( 参数列表可以不同 ) 。

一般是出现在继承中,对于派生类中函数名与基类中的函数名相同的成员函数。构成重定义。相较于函数重载来说,需要对于参数之类要求只是需要对于函数名相同即可。

class Base
{
public:Base(){cout << "Base()" << endl;}virtual void Func(){cout << "Base::Func()" << endl;}void Func(int){cout << "Func(int)" << endl;}private:};class child:public Base
{
public:virtual void Func(){cout << "child::Func()" << endl;}
private:int _c;
};

重写

子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改。

和重定义的区别就是关键字virtual ,基类中存在函数前面使用virtual 就是虚函数。与重定义一样都必须是在基类和子类中才会出现这样的定义。但是与重定义的区别在于函数名,参数,返回值都必须相等。也有特例出现例如:
就是对于析构函数,析构函数在底层被取名为destructor,统一命名就会出现对于虚函数实现。
协变(基类与派生类虚函数返回值类型不同)

派生类重写基类虚函数时,与基类虚函数返回值类型不同。即基类虚函数返回基类对象的指
针或者引用,派生类虚函数返回派生类对象的指针或者引用时,称为协变

联系及区别

1、作用域

1、重载要求在同一个作用域。
2、 重写(覆盖)、重定义(隐藏)在基类和派生类2个作用域。

2、函数要求

1、重载函数的函数数名相同但是参数不同。
2、重写函数函数名、参数、返回值(协变例外),且都需要有关键字virtual。
3、重定义函数在重写函数的规则上,少了关键字virtual。

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

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

相关文章

【ABAP】数据类型(八)「表类型」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…

h5最新mtgsig1.1成品

h5最新mtgsig1.1成品 千锤百炼&#xff0c;方得始终

印刷企业如何利用MES管理系统实现智能计划排产

在数字化时代&#xff0c;印刷企业面临着日益激烈的市场竞争和不断攀升的成本压力。为了提高生产效率和质量&#xff0c;印刷企业需要采用先进的生产管理系统。其中&#xff0c;MES生产管理系统已成为实现智能计划排产的重要工具。本文将探讨如何利用印刷MES管理系统实现印刷企…

「深度学习之优化算法」(十四)麻雀搜索算法

1. 麻雀搜索算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   麻雀搜索算法(sparrow search algorithm)是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。提出时间是2020年,相关的论文和研究还比较少,有可能还有一些正在发表中,受疫情影响需要论…

session 生命周期和经典案例-防止非法进入管理页面

文章目录 session 生命周期和Session 经典案例-防止非法进入管理页面session 生命周期Session 生命周期-说明代码演示说明 Session 的生命周期创建CreateSession2创建ReadSession2 解读Session 的生命周期代码示例创建DeleteSession Session 经典案例-防止非法进入管理页面需求…

【25】SCI易中期刊推荐——神经网络科学(中科院4区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

三菱PLC 控制灯一秒钟交替闪烁

三菱PLC中常用的特殊继电器&#xff1a; M8000 上电一直ON标志 M8002 上电导通一次 M8004 PLC出错 M8005 PLC备用电池电量低标志 M8011 10ms时钟脉冲 M8012 100ms时钟脉冲 M8013 1s时钟脉冲 M8014 1min时钟脉冲 M8034…

用 perfcollect 洞察 Linux 上.NET程序CPU爆高

一&#xff1a;背景 1. 讲故事 如果要分析 Linux上的 .NET程序 CPU 爆高&#xff0c;按以往的个性我肯定是抓个 dump 下来做事后分析&#xff0c;这种分析模式虽然不重但也不轻&#xff0c;还需要一定的底层知识&#xff0c;那有没有傻瓜式的 CPU 爆高分析方式呢&#xff1f;…

缓存数据一致性探究

缓存数据一致性探究 缓存是一种较低成本提升系统性能的方式&#xff0c;自它面世第一天起就备受广大开发者的喜爱。然而正如《人月神话》中的那句经典的“没有银弹”中所说&#xff0c;软件工程的设计没有银弹。 就像每一次发布上线修复问题的同时&#xff0c;也极易引入新的问…

element el-collapse折叠面板箭头在前显示

::v-deep .el-collapse-item__arrow {position: absolute;left: 30px;}

【山河送书第三期】:《Python机器学习:基于PyTorch和Scikit-Learn 》赠书四本!!

【山河送书第三期】&#xff1a;《Python机器学习&#xff1a;基于PyTorch和Scikit-Learn 》 前言内容简介作者简介参与方式 前言 近年来&#xff0c;机器学习方法凭借其理解海量数据和自主决策的能力&#xff0c;已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务…

PyTorch 安装

本文基于conda安装&#xff0c;请确保已经安装好Anaconda&#xff0c;可参考上一篇文章安装Anaconda。 一、确定本机CUDA版本 基于N卡&#xff0c;基于N卡&#xff0c;基于N卡 nvidia-smi #N卡用此命名查看&#xff0c;N卡如果没有此命令&#xff0c;先去更新显卡驱动二、安…