【发布时间】:2011-06-01 03:58:52
【问题描述】:
class B {
virtual int foo();
};
class D : public B {
virtual int foo() { cout<<"D\n"; }
};
int B::foo()
{
/* how do i tell if this->foo() is overridden by a subclass, or if it will */
/* simply recurse into B::foo()? */
this->foo();
}
main()
{
D d;
d.B::foo();
}
【问题讨论】:
-
可能没有可靠的方法。为什么要这样做?
-
我同意 Oli - 像普通人一样调用 d.foo()。
-
我想用一些额外的个人观点来补充我的回答。我尽我最大的努力从不质疑为什么有人想做某事。我不可能知道他们为什么要做某事,我只知道他们问了一个问题。我认为尝试解决他们的问题并提供他们可能没有想到的替代方案是可以的,但是像“像正常人一样做”这样的陈述既没有建设性也没有帮助。
-
@Andrew:我的评论会写得更爽快,但是,好吧,你得写这么多角色。另外,作为一个一直在这种cmet的另一端,绝对不是正常人的人,我很有信心知道这种cmet什么时候幽默,什么时候不幽默。
-
质疑我为什么要这样做是毫无意义的。说“只需调用 d.foo()”是一个迟钝的答案。我可以花一个小时来解释为什么这样做会对我的情况有所帮助,这将使您能够引用以其他方式实现我想要的方法。但我已经知道如何通过围绕 C++ 的这个限制进行工程来完成我想要的。所以没有必要把大家的时间浪费在一堆废话上。