C++中重载/覆盖/隐藏的区别
2015-06-16 22:23
281 查看
C++中重载/覆盖/隐藏的区别
成员函数被重载的特征:
相同的范围(在同一个类中,作用于相同)函数名相同
参数不同
virtual关键字可有可无
覆盖是指派生类函数覆盖基类函数,特征:
不同的范围(分别位于派生类与基类)函数名相同
参数相同
基类函数必须有virtual关键字
隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
如果派生类的函数与基类的函数同名,但是参数不同。此时,无论有无virtual关键字,基类的函数将被隐藏,*即无法通过与基类函数参数列表相同的函数去调用基类函数,因为已经被隐藏,会报错,当然,类内部可以通过::访问基类被隐藏函数,隐藏是对于对象的(注意别与重载混淆)如果派生类的函数与基类的函数同名,且参数相同,但是基类没有virtual关键字。此时,基类的函数将被隐藏(注意别和覆盖混淆)
*也就是说,如果基类函数没有virtual声明,如果派生类用同样的函数名重定义了函数,则将隐藏基类中所有与之同名的函数,无论参数列表是否相同,反正是隐藏了
相关文章推荐
- C语言笔记之指针的初步认识
- C++下高效率int转成string
- 开始学习C++心得实例(4)
- c++异常处理机制
- 【leetcode c++】19 removeNthFromEnd
- c++容器之vector
- [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++
- C++ Virtual介绍
- C++ Virtual介绍 分类: C/C++ 2015-06-16 21:36 26人阅读 评论(0) 收藏
- FreeGLUT Tips: Resolve compile error C2664: cannot convert argument 2 from '_TCHAR *[]' to 'char **'
- C语言和Fortran语言的差异
- 迷宫的最短路径 代码(C++)
- 一起talk C栗子吧(第十八回:C语言实例--输出十六进制)
- C++标准库之Unities-笔记2
- C++ extern/static/const
- Bjarne Stroustrup对C++程序员的忠告
- 多态原理探究-从C++编译器角度理解多态的实现原理
- 多态原理探究-从C++编译器角度理解多态的实现原理
- C、C++的Makefile的编写以及动、静态库的制作调用(包括MAC地址的获取及MD5加密)
- VS2012 C语言dll文件生成和C#调用