重载(添加):
- 相同的范围(在同一个类中)
- 函数名字相同
- 参数不同
- virtual关键字可有可无
重写(覆盖)
是指派生类函数覆盖基类函数,特征是:
- 不同的范围,分别位于基类和派生类中
- 函数的名字相同
- 参数相同
- 基类函数必须有
virtual
关键字
重定义(隐藏)
是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
- 如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无
virtual
,基类的函数被隐藏。 - 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有
vitual
关键字,此时,基类的函数被隐藏。
注意: 当发生重定义时,子类函数会覆盖父类同名函数,此时无法通过子类对象直接调用父类同名函数;但可以通过域作用符::
显式地调用父类同名函数