getData() は virtual 宣言したほうがいい

A *a;
B b;
a = &b;
a->getData() は
クラスAのgetData()が呼ばれる