For primitive types the C++ language distinguishes between ++x; and x++; as well as between –x; and x–;For objects requiring a distinction between prefix and postfix overloaded operators, the following rule is used:
class Date { //... public: Date& operator++(); //prefix Date& operator--(); //prefix Date& operator++(int unused); //postfix Date& operator--(int unused); //postfix };
Postfix operators are declared with a dummy int argument (which is ignored) in order to distinguish them from the prefix operators, which take no arguments:
void f() { Date d, d1; d1 = ++d;//prefix: first increment d and then assign to d1 d1 = d++; //postfix; first assign, increment d afterwards }