#include <iostream>
using namespace std;
struct A {
virtual void foo() {
cout << "Hello from A" << endl;
}
};
struct B: A {
void foo() {
cout << "Hello from B" << endl;
}
};
int main() {
A* b = new B();
b->foo();
((B*)b)->foo();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEgewoJdmlydHVhbCB2b2lkIGZvbygpIHsKCQljb3V0IDw8ICJIZWxsbyBmcm9tIEEiIDw8IGVuZGw7Cgl9Cn07CgpzdHJ1Y3QgQjogQSB7Cgl2b2lkIGZvbygpIHsKCQljb3V0IDw8ICJIZWxsbyBmcm9tIEIiIDw8IGVuZGw7Cgl9Cn07CgppbnQgbWFpbigpIHsKCUEqIGIgPSBuZXcgQigpOwoJYi0+Zm9vKCk7CgkoKEIqKWIpLT5mb28oKTsKCQoJcmV0dXJuIDA7Cn0=