#include <iostream>

class Base
{
public:
    virtual void print()
    {
        std::cout << "Hello from Base ";
    }
};

class Derived : public Base
{
public:
    virtual void print()
    {
        std::cout << "and Derived!" << std::endl;
    }
};

int main(void);
int main()
{
    Base foo;
    Derived bar;
    union foobar {Base *b; Derived *d;} fb;
    
    fb.b = &foo; fb.b->print();
    fb.d = &bar; fb.d->print();
 
    return 0;
}