In my experience teaching C++, operator overloading is one of those topics that causes the most grief to students. Even looking at questions here at stackoverflow: for example, make the + operator external or a member? How to handle symmetry, etc., it seems like it’s a lot of trouble.
When I moved from C++ to Java, I was worried I would miss that ability, but with the exception of operators like [] or (), I haven’t really ever felt the need to overload operators. In fact, I feel programs without them are more readable.
Note: I put this as a community wiki. Let’s discuss this. I want to hear opinions.
Overloaded operators are like spice. A little can make something better; too much can make it unpalatable.