class Base {
public:
int data_;
void bar() { std::cout << "Base\n"; }
};
class Derived : public Base {
public:
void fun() { ::std::cout << "Hi, I'm " << this << ::std::endl; }
virtual void bar() { std::cout << "Derived\n"; }
};
int main() {
Base base;
Derived *derived = static_cast<Derived*>(&base); // Undefined behavior!
derived->fun();
derived->bar();
return 5;
}