#include<iostream>
using namespace std;
class base
{
public:
virtual void fun()
{
cout<<"in base::fun\n";
}
};
class child:public base
{
public:
void fun()
{
cout<<"in child::fun\n";
}
virtual void fun(int i)
{
cout<<"in child::fun(int)\n";
}
};
class child2:public child
{
void fun()
{
cout<<"in child2::fun\n";
}
void fun(int i)
{
cout<<"in child2::fun(int)\n";
}
};
int main()
{
base *ptr;
ptr = new base();
ptr->fun();
delete ptr;
ptr = new child();
ptr->fun();
child Cobj;
Cobj.fun(10);
child *Cptr;
Cptr = new child2();
Cptr->fun(10);
Cptr->fun();
int str;
cin>>str;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgY2xhc3MgYmFzZQogICAgewogICAgcHVibGljOgogICAgICAgIHZpcnR1YWwgdm9pZCBmdW4oKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8ImluIGJhc2U6OmZ1blxuIjsKICAgICAgICB9CiAgICB9OwogICAgY2xhc3MgY2hpbGQ6cHVibGljIGJhc2UKICAgIHsKICAgIHB1YmxpYzoKICAgICAgICB2b2lkIGZ1bigpCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDwiaW4gY2hpbGQ6OmZ1blxuIjsKICAgICAgICB9CiAgICAgICAgdmlydHVhbCB2b2lkIGZ1bihpbnQgaSkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PCJpbiBjaGlsZDo6ZnVuKGludClcbiI7CiAgICAgICAgfQogICAgfTsKICAgIGNsYXNzIGNoaWxkMjpwdWJsaWMgY2hpbGQKICAgIHsKICAgICAgICB2b2lkIGZ1bigpCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDwiaW4gY2hpbGQyOjpmdW5cbiI7CiAgICAgICAgfQogICAgICAgIHZvaWQgZnVuKGludCBpKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8ImluIGNoaWxkMjo6ZnVuKGludClcbiI7CiAgICAgICAgfQogICAgfTsKICAgIGludCBtYWluKCkKICAgIHsKICAgICAgICBiYXNlICpwdHI7CiAgICAgICAgcHRyID0gbmV3IGJhc2UoKTsKICAgICAgICBwdHItPmZ1bigpOwogICAgICAgIGRlbGV0ZSBwdHI7CiAgICAgICAgcHRyID0gbmV3IGNoaWxkKCk7CiAgICAgICAgcHRyLT5mdW4oKTsKICAgICAgICBjaGlsZCBDb2JqOwogICAgICAgIENvYmouZnVuKDEwKTsKICAgICAgICBjaGlsZCAqQ3B0cjsKICAgICAgICBDcHRyID0gbmV3IGNoaWxkMigpOwogICAgICAgIENwdHItPmZ1bigxMCk7CiAgICAgICAgQ3B0ci0+ZnVuKCk7CiAgICAgICAgaW50IHN0cjsKICAgICAgICBjaW4+PnN0cjsKCiAgICB9