我遇到一个问题,派生类在从基类指针调用时没有自己的函数版本。为了更好地解释类定义如下
Class Foo
{
public:
Foo();
virtual ~Foo();
virtual void Event();
}
//-----------------------
Class FooBar : public Foo
{
public:
FooBar();
virtual void Update() = 0;
virtual void Draw() = 0;
}
//-----------------------
Class FinalFoo : public FooBar
{
public:
FinalFoo();
void Update();
void Draw();
void Event();
}
还有其他类似的类FinalFoo
。所以我尝试调用Event
一个指向Foo
对象的指针,期望它会调用派生实现。但是,它似乎调用了基类版本,仅此而已
FinalFoo* myThing = new FinalFoo();
Foo* baseThing = myThing;
baseThing->Event(); // I expected this to call FinalFoo::Event()