【发布时间】:2011-11-01 09:08:57
【问题描述】:
我有一个名为 Object 的基类。 PhysicsObject 继承自 Object。 Ball 继承自 PhysicsObject,SoftBall 继承自 Ball。像这样的:
Object
|
PhysicsObject
|
Ball
|
SoftBall
我有一个名为 foo() 的方法,它在 Object 中声明为虚拟(给定一个实现,因此不是纯虚拟),然后在 PhysicsObject 和 Ball 中再次声明并实现为虚拟。最后,SoftBall 再次实现了 foo() 而没有将其声明为虚拟。
如果我有一个指向 SoftBall 的 Object*,是否会调用 SoftBall 的 foo() 版本?如果没有,有什么方法可以达到这个效果?基本上,多态性的这一方面是否仍然适用于多个继承级别?
【问题讨论】:
标签: c++ oop inheritance polymorphism virtual