#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQmFzZQp7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBwcmludCgpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJIZWxsbyBmcm9tIEJhc2UgIjsKICAgIH0KfTsKCmNsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZQp7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBwcmludCgpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJhbmQgRGVyaXZlZCEiIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmludCBtYWluKHZvaWQpOwppbnQgbWFpbigpCnsKICAgIEJhc2UgZm9vOwogICAgRGVyaXZlZCBiYXI7CiAgICB1bmlvbiBmb29iYXIge0Jhc2UgKmI7IERlcml2ZWQgKmQ7fSBmYjsKICAgIAogICAgZmIuYiA9ICZmb287IGZiLmItPnByaW50KCk7CiAgICBmYi5kID0gJmJhcjsgZmIuZC0+cHJpbnQoKTsKIAogICAgcmV0dXJuIDA7Cn0=