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

本文详细解释了函数重载、隐藏(重写)与覆盖的概念,并探讨了它们在编程中的应用。重载允许在同一作用域中定义多个具有相同名称但参数不同的函数。隐藏发生在内部作用域中的标识符覆盖了外部作用域中的同名标识符。覆盖涉及派生类中的虚函数对基类虚函数的重新定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大音若希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值