Бинарная функциональная операция может определятся внутри и вне класса.
Если бинарная операция определена внутри класса, то при этом вызывающий ее объект считается первым операндом.
Пример 1

/* внутри */
class monstr
{
bool operator>(const monstr &M)
{
if(health > M.get_health()) return true;
return false;
}
}

/* вне класса*/
bool operator>(const monstr & M1, const monstr &M2)
{
if(M1.get_health > M2.get_health()) return true;
return false;
}