Test cases
A* a = new A; a->value(); a->strange(); a->value();ok
A* b = new B; b->value(); b->strange(); b->value();error
Dynamic binding
int f(A* a) { a->strange(); return a->value(); }
A* a = new A; a->value(); a->strange(); a->value();ok
A* b = new B; b->value(); b->strange(); b->value();error
int f(A* a) { a->strange(); return a->value(); }