difference between global operator and member operator
c++, operator-overloading
Solution
One reason to use non-member operators (typically declared as friends) is because the left-hand side is the one that does the operation. `Obj::operator+` is fine for:
obj + 2
but for:
2 + obj
it won't work. For this, you need something like:
class Obj
{
friend Obj operator+(const Obj& lhs, int i);
friend Obj operator+(int i, const Obj& rhs);
};
Obj operator+(const Obj& lhs, int i) { ... }
Obj operator+(int i, const Obj& rhs) { ... }
Problem
Is there a difference between defining a global operator that takes two references for a class and defining a member operator that takes only the right operand? Global: ``` class X { public: int value; }; bool operator==(X& left, X& right) { return left.value == right.value; }; ``` Member: ``` class X { int value; bool operator==( X& right) { return value == right.value; }; } ```