博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】C++函数的重载、覆盖和隐藏区别
阅读量:4561 次
发布时间:2019-06-08

本文共 797 字,大约阅读时间需要 2 分钟。

网上看到的关于C++函数的重载、覆盖和隐藏区别的回答,如下(其内容来源于C++面试宝典中一道题目):

a.成员函数被重载的特征:

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

一个派生类的函数如果覆盖了某个继承而来的虚函数,则它的形参类型及返回类型必须与被它覆盖的基类函数完全一致,除非当类的虚函数返回类型是类本身的指针或引用时。

当派生类中某函数与基类的某虚函数名字及形参相同时,此时编译器认为派生类覆盖了这个函数,此时返回类型需一致,除非是上述情况,不然出错。若形参类型不同,这是两个不同的函数(隐藏)。

 c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(若有virtual关键字,则是覆盖)(注意别与覆盖混淆).

看了后,觉得还是写的有点复杂。自己总结了一下

(1)成员函数被重载,是在一个类当中,具体的概念上面已经有所陈述。

  (2)覆盖指派生类函数覆盖基类函数,从其特征可以看出,它是为了实现多态的效果。描述了要实现多态的必要条件

  (3)“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,其特征实际上是要实现多态的效果所需要的充要条件。

转载于:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3854838.html

你可能感兴趣的文章
13.UiAutomator 辅助APK的使用
查看>>
通过ida dump Uinity3D的加密dll
查看>>
一步步学Qt,第九天-Q”STL”与STL-再看C++
查看>>
JAVA集合框架的学习
查看>>
Hackers’ Crackdown-----UVA11825-----DP+状态压缩
查看>>
卡数字怀念的东西:魔方
查看>>
EL表达式的隐式对象
查看>>
一本开源的程序员快速成长秘笈
查看>>
python基础 六、模块和包
查看>>
url传中文,转码
查看>>
NSIndexSet
查看>>
在Linux环境中使用Ext3文件系统
查看>>
配置git使用socks5代理
查看>>
家庭作业:12.18,9.13,8.25,2.62
查看>>
wpf DataGrid 里的列模版的值绑定
查看>>
Python+requests库 POST接口图片上传
查看>>
pyCharm激活
查看>>
随机过程书籍介绍
查看>>
hzwer第五套模拟赛
查看>>
创建动态组件的要点
查看>>