struct A {
virtual void print(){cout << "A\n"}
};
struct B : A {
void print(){cout << "B\n"}
};
A* p = new B;
p->print(); // Bと表示される。
p->print(); → (p->*(p->vfptr[0]))();というように変形されているように呼び出される。 ([0]は仮想関数テーブルの1番目の関数を意味している。)
void func(){print();} → void func(){this->print();}