    struct A { virtual const char* fn() { return "A"; } };
    struct B : public A { virtual const char* fn() { return "B"; } };

    #include <iostream>
    #include <cstring>
    
    int main()
    {
        A* a = new A();
        B* b = new B();
        memcpy(a, b, sizeof(A));
        std::cout << "sizeof A = " << sizeof(A)
            << " a->fn(): " << a->fn() << '\n';
    }       
