文档章节

重载 覆盖 和隐藏的区别

mskk
 mskk
发布于 2017/04/29 22:45
字数 246
阅读 4
收藏 0

a.成员函数被重载的特征:
(1)相同的范围(在同搜索一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
b.覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

本文转载自:https://zhidao.baidu.com/question/177318934642858524.html

mskk
粉丝 3
博文 175
码字总数 5991
作品 0
昆山
程序员
私信 提问
加载中

评论(1)

mskk
mskk
重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。
重载(overload)、覆盖(override)、隐藏(hide)的区别

谈谈重载(overload)覆盖(override)与隐藏 转自http://blog.csdn.net/yanjun_1982/archive/2005/09/02/470405.aspx 这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概...

SuShine
2016/05/03
150
0
成员函数的(重载,覆盖,隐藏)

我理解到的 隐藏,子类父类同名函数,参数不一样就是隐藏(在子类中父类函数为不可见),即 class Fruit{public:void priName(int s){cout<<"水果"<<endl;}}; class Apple :public Fruit{pub......

梦想游戏人
2015/05/18
0
0
重载、覆盖、隐藏

成员函数的重载、覆盖与隐藏 成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚 概念,否则错误将防不胜防。 8.2.1 重载与覆盖 成员函数被重载的特征: (1)相同的...

长征4号
2017/07/13
0
0
C++中重载、重写(覆盖)的区别实例分析

本文实例讲述了C++中重载、重写(覆盖)和隐藏的区别,对于C++面向对象程序设计来说是非常重要的概念。具体分析如下: 1.重载:重载从overload翻译过来,是指同一可访问区内被声明的几个具有...

h8b6pk7m7r8
2018/01/08
0
0
有关C++类中的重载,覆盖与隐藏

在过程式编程中,我们常常用到重载,重载的好处显而易见,可以让我们以一个名字去定义某一类操作(对不同的各种输入),其实在面向对象的类中,重载依然发挥这样的好处。 例如如下代码:cla...

芝麻糖人
2016/04/20
15
0

没有更多内容

加载失败,请刷新页面

加载更多

REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
7分钟前
0
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
23分钟前
0
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
今天
1
0
今天的学习

今天学到了<select></select>标签: <label for="unittype">Select unit type: </label><select id="unittype" name="unittype" autofocus > <option value="1"> Miner </option> ......

墨冥
今天
1
0
程序员随想-关于分享

最早的时候,文字是贵族这些上层人士才会学习的,底层人士没有资格和渠道去学习,同样用文字、图像等其他载体承载的知识大部分也只有贵族阶层才能享受的。后来有了造纸术、印刷术,成本降低,...

Lubby
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部