#include <iostream>
class Base
{
public:
void function1(){std::cout<<"1"<<std::endl;}
virtual void function2()=0;
};
class Derived : public Base
{
public:
virtual void function2(){std::cout<<"2"<<std::endl;}
};
int main()
{
Derived d;
void* ptr = static_cast<void*>(&d);
Base* baseptr=static_cast<Base*>(ptr);
baseptr->function1();
baseptr->function2();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQmFzZQp7CiAgICBwdWJsaWM6CiAgICAgICB2b2lkIGZ1bmN0aW9uMSgpe3N0ZDo6Y291dDw8IjEiPDxzdGQ6OmVuZGw7fQogICAgICAgdmlydHVhbCB2b2lkIGZ1bmN0aW9uMigpPTA7Cn07CgpjbGFzcyBEZXJpdmVkIDogcHVibGljIEJhc2UKewogICAgcHVibGljOgogICAgICAgdmlydHVhbCB2b2lkIGZ1bmN0aW9uMigpe3N0ZDo6Y291dDw8IjIiPDxzdGQ6OmVuZGw7fQp9OwoKaW50IG1haW4oKQp7CiAgICBEZXJpdmVkIGQ7CiAgICB2b2lkKiBwdHIgPSBzdGF0aWNfY2FzdDx2b2lkKj4oJmQpOwogICAgQmFzZSogYmFzZXB0cj1zdGF0aWNfY2FzdDxCYXNlKj4ocHRyKTsKICAgIGJhc2VwdHItPmZ1bmN0aW9uMSgpOwogICAgYmFzZXB0ci0+ZnVuY3Rpb24yKCk7IAp9