Почему иногда переопределение оператора определяется как метод в классе, например
MyClass& MyClass::operatorFoo(MyClass& other) { .... return this; };
и иногда это отдельная функция, например
MyClass& operatorFoo(MyClass& first, MyClass& bar)
Они эквивалентны? Какие правила действуют, когда вы делаете это одним способом, а когда вы делаете это другим?