#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();
}
