注意:这里仅讨论同名函数为非虚函数情况
1 先看 非同名函数
调用情况
此种情况最简单,结论是可通过子类直接调用自己没有的父类函数。
1 | class Base |
2 函数名相同,形参的个数或类型不同
的情况
结论:
- 子类函数覆盖基类的同名函数,无法通过派生类直接调用基类同名函数(与Python可以直接调用父类函数也不同)
- 可以显示调用基类函数
- 可以使用基类指针指向派生类对象,通过指针调用基类函数
- 这种情况是最需要要关注的,不属于函数重载,注意区分
1 | class Deprive: public Base |
3 函数名相同,形参的个数和类型也相同
的情况
结论:
- 子类覆盖父类同名函数,直接用子类对象调用同名函数会默认调用子类的函数。
这种情况下想调用基类方法,与函数名相同,形参的个数或类型不同
的情况相同