重载(overload)
定义:在一个类中相同的函数名但参数不同,与函数返回值无关;
隐藏(Hiding)\重定义(redefining)
重定义也叫隐藏
隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
- 如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
- 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意这种情况与函数重载的区别,重载发生在同一个类中。)。
隐藏指的是在继承关系中,子类实现了一个和父类名字一样的函数,(只关注函数名,和参数与返回值无关)这样的话子类的函数就把父类的同名函数隐藏了。
(重写\覆盖)
定义:子类重写父类的同名且参数相同的虚函数, 基类函数必须有virtual关键字。
重载是编译时的多态性,重写是运行时的多态性。