#include <iostream>
struct A {
virtual void test() {
std::cout << "A" << std::endl;
}
};
struct B: public A {
virtual void test() {
std::cout << "B" << std::endl;
}
};
int main()
{
auto a = new A();
auto b = new B();
auto ap = static_cast<A*>(b);
auto bp = static_cast<B*>(a);
ap->test();
bp->test();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgewogICAgdmlydHVhbCB2b2lkIHRlc3QoKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJBIiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CnN0cnVjdCBCOiBwdWJsaWMgQSB7CiAgICB2aXJ0dWFsIHZvaWQgdGVzdCgpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIkIiIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgYXV0byBhID0gbmV3IEEoKTsKICAgIGF1dG8gYiA9IG5ldyBCKCk7CiAgICBhdXRvIGFwID0gc3RhdGljX2Nhc3Q8QSo+KGIpOwogICAgYXV0byBicCA9IHN0YXRpY19jYXN0PEIqPihhKTsKICAgIGFwLT50ZXN0KCk7CiAgICBicC0+dGVzdCgpOwp9Cg==