#include <iostream>
struct A
{
virtual void f() { std::cout << "A\n"; }
};
struct B : A
{
virtual void f() { std::cout << "B\n"; }
};
int main()
{
A* ab[] = { new A, new B };
for( A* a : ab )
{
a->f();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEKewoJdmlydHVhbCB2b2lkIGYoKSB7IHN0ZDo6Y291dCA8PCAiQVxuIjsgfQp9OwoKc3RydWN0IEIgOiBBIAp7Cgl2aXJ0dWFsIHZvaWQgZigpIHsgc3RkOjpjb3V0IDw8ICJCXG4iOyB9Cn07CgppbnQgbWFpbigpIAp7CglBKiBhYltdID0geyBuZXcgQSwgbmV3IEIgfTsKCQoJZm9yKCBBKiBhIDogYWIgKQoJewoJCWEtPmYoKTsKCX0KCglyZXR1cm4gMDsKfQ==