多重继承二义性和重载的区别

剑南道刺史 2018-08-26 03:02:32
C++primer620页说道:即使两个继承的函数具有不同的形参表也会产生错误...名字查找总是以两个步骤发生。但是多重继承得到的名字相同而形参列表不同的函数为什么锁雾不能认为是重载呢?它和重载之间有什么区别?
...全文
214 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kbasm 2018-08-27
  • 打赏
  • 举报
回复
这个叫 c++ name hiding,可以搜一下。
sghcpt 2018-08-27
  • 打赏
  • 举报
回复
个人理解:楼主,重载是在同一个类中函数名相同,参数个数或者类型不同的函数才是重载吧。。而继承关系那种不是重载吧,只是继承了父类的函数而已吧,所以就有下面一段说明:

在多重继承中,成员函数中使用的名字查找首先在函数本身进行,如果不能在本地找到名字,就继续在成员的类中查找,然后同时(并行)查找所有基类继承子树。多重继承的派生类有可能从两个或者多个基类继承同名成员,对该成员不加限定的使用是二义性。
注意:多重继承中首先发生名字查找。你可能会感到吃惊的是,即使两个继承的同名函数有不同的形参表,也会产生错误。类似地,即使函数在一个类中是私有的而在另一个类中是公有或者受保护的,也是错误的。或者在一个类给定义了函数,而在另一个类中没有定义,调用仍是错误的。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧