This one takes me by surprise. Some people don't immediately understand what pointers are good for, but I didn't expect anyone not to understand the huge advantage of operator overloading.
Some random examples that would be so ugly without operator overloading:
Code:
std::string a = "orange";
std::string b = "apple";
if (b < a)
std::cout << "told you so!" << std::endl;
Code:
complex j(1, 2);
complex k(-2, 1);
if (j*k == k/j)
std::cout << "didn't think so!" << std::endl;
In fact if you make your own class to represent some kind of data and you don't provide the sensible set of operator overloads, then your class just sux. E.g. If you don't implement less-than then putting it in a std::set or sorting a vector of them etc just becomes unecessarily awkward.