virtualをつけないとオーバライドされない、と。
#include <iostream> using namespace std; class Foo { public: void func() { cout << "Foo::func()" << endl; } virtual void vfunc() { cout << "Foo::vfunc()" << endl; } }; class Bar : public Foo { public: void func() { cout << "Bar::func()" << endl; } void vfunc() { cout << "Bar::vfunc()" << endl; } }; int main() { Foo foo, *p; Bar bar; p = &foo; p->func(); p->vfunc(); p = &bar; p->func(); p->vfunc(); return 0; }
Foo::func()
Foo::vfunc()
Foo::func()
Bar::vfunc()