多级继承 C++
Posted
技术标签:
【中文标题】多级继承 C++【英文标题】:Multilevel inheritance C++ 【发布时间】:2017-11-23 17:44:29 【问题描述】:假设类 C 继承自类 B,该类覆盖 A 中定义的虚函数。C 不会覆盖该函数。当 A* 类型的指针指向 C 类型的对象时,函数调用会使用 B 中的覆盖版本吗?
【问题讨论】:
你试过了吗? @ChristianHackl 我对阻止这种看似简单的问题持谨慎态度。 C++ 有很多情况下 UB 似乎可以工作,但实际上并没有,问一下也无妨:) @Quentin:是的,也不是。一个更好的问题是“当我尝试时它确实会调用它,但是这种行为是否得到保证?” 就目前而言,这个问题对我来说几乎就像一个家庭作业。 @ChristianHackl 够公平的! 【参考方案1】:是的!
在语义上,C
隐式地从 B
继承其实现。
具体来说,被调用的虚函数的实现是最可用的派生函数。
【讨论】:
【参考方案2】:当 A* 类型的指针指向 C 类型的对象时,函数调用会使用 B 中重写的版本吗?
是的。
【讨论】:
【参考方案3】:是的,函数调用将使用 B 中的覆盖版本,除非您在 C 中实现虚函数。在这种情况下,函数调用将是 C 的。
【讨论】:
以上是关于多级继承 C++的主要内容,如果未能解决你的问题,请参考以下文章