You can overload these operators: (in C++):
, ! != % %= & & &&
&= ( ) * * *= + +
++ += – – –– –= –>
–>* / /= < << <<= <= =
== > >= >> >>= [ ] ^ ^=
| |= || ~ delete new
And you can't overload the following:
. .* :: ?:
You can't overload # and ##, either, but they're not really operators.
The following operators must be overloaded as a class member:
= ( ) [ ] ->
There are no operators which CAN'T be overloaded as a member, but if the left-hand operand isn't your class, it can't be a member. (The left-hand operand is the object on which the overloaded method is being called.) So like the stream insertion/extraction operators (<< and >>).