Code:
//base class
class Human
{
protected:
int life;
public:
virtual void Die() = 0;
virtual void Damage( int dmg ) = 0;
};
//derived class 1
class Civilian : public Human
{
public:
Civilian()
{
life = 10;
}
void Die()
{
printf( "...dead" );
}
void Damage( int dmg )
{
life = life - dmg;
if( life < 0 ) Die();
}
};
//derived class 2
class Soldier : public Human
{
public:
Soldier()
{
life = 15;
}
void Die()
{
printf( "...throwing last handgrenade... dead" );
}
void Damage( int dmg )
{
life = life - ( dmg - 1 ); // 1 point armor
if( life < 0 ) Die();
}
};
void Hurt( Human& person )
{
person.Damage( 5 );
}
int main()
{
Civilian a;
Soldier b;
Hurt( a );
Hurt( a );
Hurt( a );
Hurt( a );
Hurt( b );
Hurt( b );
Hurt( b );
Hurt( b );
Hurt( b );
Hurt( b );
return 0;
}