《Effective C++》条款33、避免遮掩而来的名字

本文探讨了继承关系中同名函数的作用域问题,特别是当派生类与基类存在同名函数时,派生类会遮掩基类的同名函数。为了解决这个问题,可以利用`using`声明将基类的函数引入派生类作用域,使得在需要时能够调用基类的同名函数。此外,通过私有继承并重新封装,可以选择性地继承和使用基类的特定函数。
摘要由CSDN通过智能技术生成

对于继承关系中得函数得同名作用域问题,现在已经清楚编译器是如何去对作用域进行查找的了,但是我们依然需要了解在继承和虚函数的关系中,我们的同名e问题是怎样的。

参考下面一段代码:
在这里插入图片描述
上面的继承关系中,派生类和基类中的函数出现了同名的问题,这时,派生类中的同名函数将会遮掩掉所有基类中的同名函数。如下的用法将会更加清晰:
在这里插入图片描述
即使派生类中的函数和基类中的有所不同,但是在派生类对象中,也无法调用基类中的同名函数。

使用using避免同名函数遮掩问题

我们可以使用using声名将派生类中的同名函数引入到派生类中,这样便能解决基类中的函数同名,但是参数不同的函数被遮蔽的问题。
在这里插入图片描述
利using声名显示的将基类中的同名函数引入到派生类中,这样当我们使用不同的参数同名参数时,我们便能调用相应的参数匹配的函数。
在这里插入图片描述

选择继承某个方法
但是,有时我们仅是希望继承基类中的某个函数,因此,我们可以采用私有的方式进行继承,然后将私有继承的函数进行封装,这样我们看起来就像是仅是继承了基类中的某个函数而已。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值