类成员函数 重载 覆盖 和 隐藏 的区别
2015-07-21 16:21
357 查看
a.成员函数被重载的特征:
(1)相同的范围(比如在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
b.覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)
隐藏破坏了多态性,因此一般要将隐藏换成覆盖。
转自点击打开链接
(1)相同的范围(比如在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
b.覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)
隐藏破坏了多态性,因此一般要将隐藏换成覆盖。
转自点击打开链接
相关文章推荐
- linux学习——安装jdk配置环境变量
- Spring3.1 profile 配置不同的数据库环境
- 什么是EJB
- PHP中使用cURL实现Get和Post请求的方法
- MFC对话框中添加状态栏的方法
- select2固定值使用
- Android 自定义View (一)
- Can't convert to dimension: type=0x12问题
- 开启CURL扩展,让服务器支持PHP curl函数(远程采集)
- iOS- Swift和Object-C的混合编程
- 数据结构——士兵队列训练问题
- ArcGIS栅格图像矢量配准
- TCP/IP学习(四)TCP缓冲区大小及限制
- 人脸识别应用的创新潮
- codevs1046
- java应用程序利用Exe4j打包exe文件
- javascript编程中一种常见的代码坏味道:Pyramid of doom(金字塔厄运)
- codeigniter 该脚本在运行300s超时退
- 随笔4
- Node.js fs 模块