It might be ok to add, but I'll agree it is very often abused. for instance, cout and cin confused me forever because they were the bitshift operators and it made no sense. Sure I could use it but it was pretty odd. Anyway, operator overloads are only truely useful in cases where the objects are mathematic like matrices, quaternions, vectors, etc. And even in those cases many of the overloads aren't really necissary, and rarely used.
Much more important is function overloads, private type members, and properties.
Much more important is function overloads, private type members, and properties.