【发布时间】:2011-12-15 05:13:09
【问题描述】:
我遇到了一个奇怪的问题,我相信这很容易解决。我有一个超级类,我们称之为“鸟”。 Bird 有一个名为 chirp 的虚函数,它返回 0。我还有一个子类,让我们称之为...SomeOtherBird。 SomeOtherBird 是 Bird 的子类。我的子类的 chirp() 函数应该返回 1。
到目前为止:
Bird.Chirp() 应该返回 0 SomeOtherBird.Chirp() 应该返回 1
其他鸟类是鸟类的子类。
现在假设我将 Bird 传入一个单独的构造函数,我们称它为 nest。
所以:巢(鸟& x)
如果我传入 SomeOtherBird,然后调用 Chirp,它会调用主超类的虚函数,而不是子类的虚函数,例如:
SomeOtherBird x; 巢(x); 然后如果我执行 x.chirp,则调用 main 方法,而不是子类的方法。
如何获取要调用的子类中的函数,而不是虚拟主函数?
谢谢
【问题讨论】:
-
另外,包括您遇到问题的实际代码,而不是一些迂回的描述。
-
Dynamic Dispatch 应该可以工作并且应该返回 1,除非你正在做其他事情。发布您的整个代码
标签: c++ inheritance polymorphism