C++ overloading clearly advocates simplicity in usage and readability. That is why all forms of operators are getting overloaded to give natural and domain oriented meanings.
The increment operator ++ can be called in two forms post fix and pre fix. The programmers will have a slight difficulty in overloading/using it because, they won’t know how to differentiate them. That is why postfix operators are created with a dummy parameter of type int.
The prefix ++ operator can be overloaded as such, without any change. Look at the function/operator definition.
class Test { int i; public: void operator ++() { ++i; } };
The post fix ++ operator will be overloaded with a dummy integer parameter as follows.
Class Test { int i; public: void operator ++(int) { i++; } };
Similar method of overloading is used for the — post/prefix operators also.
The stream operators << and << need a different type of treatment. Though these kind of techniques make the life of the developer difficult, it is the user who is going to be benefited the most.