#include <iostream>
using namespace std;
class Enemy
{
public:
void SetAttackPower (int a)
{
AttackPower = a;
}
virtual void attack() = 0;
virtual ~Enemy() {};
protected:
int AttackPower;
};
class Monster: public Enemy
{
public:
virtual void attack ()
{
cout << "uaghhh. i am going to eat you -" << AttackPower << endl;
}
~Monster(){}
};
class Ninja: public Enemy
{
public:
virtual void attack()
{
cout << "chop-chop -" << AttackPower << endl;
}
~Ninja(){}
};
int main()
{
Enemy* enemy1 = new Ninja();
Enemy* enemy2 = new Monster();
enemy1->SetAttackPower(22);
enemy2->SetAttackPower(25);
enemy1->attack();
enemy2->attack();
delete enemy1;
delete enemy2;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRW5lbXkKewpwdWJsaWM6CiAgICAgICAgdm9pZCBTZXRBdHRhY2tQb3dlciAoaW50IGEpCiAgICAgICAgewogICAgICAgICAgICAgICAgQXR0YWNrUG93ZXIgPSBhOwogICAgICAgIH0KICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNrKCkgPSAwOwogICAgICAgIHZpcnR1YWwgfkVuZW15KCkge307CnByb3RlY3RlZDoKICAgICAgICBpbnQgQXR0YWNrUG93ZXI7Cn07CgpjbGFzcyBNb25zdGVyOiBwdWJsaWMgRW5lbXkKewpwdWJsaWM6CiAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjayAoKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgInVhZ2hoaC4gaSBhbSBnb2luZyB0byBlYXQgeW91IC0iIDw8IEF0dGFja1Bvd2VyIDw8IGVuZGw7CiAgICAgICAgfQogICAgICAgIH5Nb25zdGVyKCl7fQp9OwoKY2xhc3MgTmluamE6IHB1YmxpYyBFbmVteQp7CnB1YmxpYzoKICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNrKCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJjaG9wLWNob3AgLSIgPDwgQXR0YWNrUG93ZXIgPDwgZW5kbDsKICAgICAgICB9CiAgICAgICAgfk5pbmphKCl7fQp9OwoKaW50IG1haW4oKQp7CiAgICAgICAgRW5lbXkqIGVuZW15MSA9IG5ldyBOaW5qYSgpOwogICAgICAgIEVuZW15KiBlbmVteTIgPSBuZXcgTW9uc3RlcigpOwogICAgICAgIGVuZW15MS0+U2V0QXR0YWNrUG93ZXIoMjIpOwogICAgICAgIGVuZW15Mi0+U2V0QXR0YWNrUG93ZXIoMjUpOwogICAgICAgIGVuZW15MS0+YXR0YWNrKCk7CiAgICAgICAgZW5lbXkyLT5hdHRhY2soKTsKICAgICAgICBkZWxldGUgZW5lbXkxOwogICAgICAgIGRlbGV0ZSBlbmVteTI7CiAgICAgICAgcmV0dXJuIDA7Cn0K