成员函数的重载,覆盖与隐藏
2016-02-29 23:08
295 查看
重载
具有相同的作用域(即同一个类定义中)
函数名字相同
参数类型、顺序或数目不同(包括const参数和非const参数)
virtual关键字可有可无
覆盖
是指派生类重新实现(或改写)了基类的成员函数,其特征是:
不同的作用域(分别位于派生类和基类)
函数名称相同
参数列表完全相同
基类函数必须是虚函数
virtual关键字告诉编译器,派生类中相同的成员函数应该放到vtable中,并替换基类相应成员函数的槽位。
虚函数的覆盖有两种方式:完全重写和扩展。扩展是指派生类虚函数首先调用基类的虚函数,然后再增加新的功能。
隐藏
是指派生类的成员函数遮蔽了与其同名的基类成员函数。
派生类的函数与基类的函数同名,但是参数列表有所差异。此时,不论有无virtual关键字,基类的函数在派生类中将被隐藏(注意区别重载)
派生类的函数与基类的函数同名,参数列表也相同,但是基类函数没有virtual关键字。此时,基类的函数在派生类中将被隐藏(注意区别覆盖)
具有相同的作用域(即同一个类定义中)
函数名字相同
参数类型、顺序或数目不同(包括const参数和非const参数)
virtual关键字可有可无
覆盖
是指派生类重新实现(或改写)了基类的成员函数,其特征是:
不同的作用域(分别位于派生类和基类)
函数名称相同
参数列表完全相同
基类函数必须是虚函数
virtual关键字告诉编译器,派生类中相同的成员函数应该放到vtable中,并替换基类相应成员函数的槽位。
虚函数的覆盖有两种方式:完全重写和扩展。扩展是指派生类虚函数首先调用基类的虚函数,然后再增加新的功能。
隐藏
是指派生类的成员函数遮蔽了与其同名的基类成员函数。
派生类的函数与基类的函数同名,但是参数列表有所差异。此时,不论有无virtual关键字,基类的函数在派生类中将被隐藏(注意区别重载)
派生类的函数与基类的函数同名,参数列表也相同,但是基类函数没有virtual关键字。此时,基类的函数在派生类中将被隐藏(注意区别覆盖)
相关文章推荐
- HDU 4344-Mark the Rope-大数素因子分解
- simplify Path
- iOS 沙盒
- [LeetCode][JavaScript]Climbing Stairs
- js中的包装对象。
- RN 与 Android 代码交互
- ui进阶第七天,触摸事件
- Properties类详细解析
- struts2+Hibernate4+spring3+EasyUI环境搭建之五:引入jquery easyui
- 自定义View基础与原理
- View Programming Guide for iOS 学习笔记_2
- LeetCode92——Reverse Linked List II
- Java8中的 Default 方法
- CSS学习(三)-css边框样式(上)
- 4.接口
- 二位数组按某一个或多个字段值(升序/降序)排序
- 又是一年收获季
- Linux 用户和组
- 52jdss经典说说:生活处处是陷阱,在不知到的情况下也许你就陷入绝境、、、
- Spring In Action 第4版笔记-第一章-001架构