В C ++ бинарные операторы могут быть переопределены одним или двумя операторами, когда LHS является объявленным классом.Если объявлено с двумя параметрами, должно быть функцией, не являющейся членом.В этом коде два объявления идентичны.
class MyClass
{
public:
MyClass operator+(const MyClass&);
}
MyClass operator+(const MyClass&, const MyClass&);
Существует ли причина, по которой последнее не может быть выполнено как статическая функция-член?Например,
class MyClass
{
public:
static MyClass operator+(const MyClass&, const MyClass&);
}
Это упростит запись операторов ввода / вывода потока (я знаю, что вы можете использовать friend
для объявления оператора)