class A
{
public:
virtual void
doSomething(void)
{}
void
doStuff(void)
{
doSomething();
}
};
class B : public A
{
public:
void
doSomething(void)
{
// do some stuff here
}
};
B * b = new B;
b->doStuff();
它给我分段错误。我究竟做错了什么?它应该在我看来很好!从基类方法调用子类虚拟方法
B没有doStuff成员 - 所以A :: doStuff将被调用。 – 2010-01-15 12:42:36
他正在调用非多态'doStuff',其实现调用多态'doSomething'。 – ChrisW 2010-01-15 12:43:31
我打电话给在'B'类中声明并从'A'类调用的'doStuff()'。 – kjagiello 2010-01-15 12:45:23