重载-overload、隐藏(重写)-overwrite与覆盖-override的概念:
- 函数重载:在相同作用域下,两个或多个函数,具有相同的函数名,但形参的个数或类型不同,编译器根据形参和实参的类型及个数的最佳匹配,自动确定调用哪个函数。
- 隐藏(重写):如果具有两个或多个具有包含关系的作用域,外层声明了一个标识符(变量或函数),而内层没有再次声明同名的标识符,那么外层标识符在内层仍然可见;如果内层声明了同名标识符,则外层标识符在内层不可见,即内层标识符隐藏了外层同名标识符。对于类的派生而言,派生类作用域包含在基类作用域的内层。(同名隐藏)
- 覆盖:覆盖与虚函数密切相关,派生类虚函数覆盖基类虚函数。实现通过基类指针或引用对象访问派生类对象的虚函数。
确定调用基类还是派生类成员:
- 满足类型兼容规则,不满则虚函数多态条件时,基类的对象、指针、引用可以替换(表示)派生类对象,但只能使用派生类从基类继承过来的成员。
- 满足虚函数多态条件时,基类的指针、引用可以替换(表示)派生类对象,且通过动态绑定机制使用派生类中的虚函数。