重载、覆盖、隐藏辨析
重载条件:C++中实现多态的方法之一,实现的是编译时多态,又称早绑定,编译时确定调用函数。
- 相同范围内(同一个类中)
- 函数名相同,参数不同(参数类型或参数个数)
- Virtual关键字可有可无
覆盖条件:派生类覆盖基类函数,通过改写基类虚函数成员的实现使派生类对象可以有不同的行为表现,C++实现多态的另一个方法,实现的是运行时多态,又称晚绑定。
- 不同范围内(分别位于基类和派生类中)
- 名字相同,参数相同
- 基类必须有virtual关键字
隐藏:被隐藏的成员需要通过类名和作用域分辨符来标识成员(多基类继承时都多个基类中有同名函数)
- 若派生类的函数与基类的函数同名,且参数不同,无论virtual有无,此时基类函数被隐藏
- 若派生类的函数与基类函数同名且参数不同、基类没有virtual关键字
个人总结,若有不正确的地方欢迎交流与留言指正