区分函数重载、隐藏、函数覆盖,确定使用哪个成员

重载-overload、隐藏(重写)-overwrite与覆盖-override的概念:

  • 函数重载:在相同作用域下,两个或多个函数,具有相同的函数名,但形参的个数或类型不同,编译器根据形参和实参的类型及个数的最佳匹配,自动确定调用哪个函数。
  • 隐藏(重写):如果具有两个或多个具有包含关系的作用域,外层声明了一个标识符(变量或函数),而内层没有再次声明同名的标识符,那么外层标识符在内层仍然可见;如果内层声明了同名标识符,则外层标识符在内层不可见,即内层标识符隐藏了外层同名标识符。对于类的派生而言,派生类作用域包含在基类作用域的内层。(同名隐藏
  • 覆盖:覆盖与虚函数密切相关,派生类虚函数覆盖基类虚函数。实现通过基类指针或引用对象访问派生类对象的虚函数。

确定调用基类还是派生类成员:

  • 满足类型兼容规则,不满则虚函数多态条件时,基类的对象、指针、引用可以替换(表示)派生类对象,但只能使用派生类从基类继承过来的成员。
  • 满足虚函数多态条件时,基类的指针、引用可以替换(表示)派生类对象,且通过动态绑定机制使用派生类中的虚函数。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值