I know this issue has been discussed several times , but I could not find a post which explains why a copy needs to be made in case of a post-increment operation.
Quoting from a stackoverflow reply:
int j = i++; // j will contain i, i will be incremented.
int j = ++i; // i will be incremented, and j will contain i+1.
Which perfectly makes sense when the definition of post/pre increment is considered. Many times when comparing the performance of pre/post increment it is said that post increment needs to make a copy, increment it and return the copy while pre-increment just increases value and does not create a copy.
Although performance has been compared in tens of posts, I really could not find any explanation on why a copy has to be made in the case of post-increment. Why doesn't it return the old value and then increments the value of the variable by one(or however way operator is overloaded), rather than creating a new object and return that one.
The difference is
someval++
returns whatsomeval
is before the increment and to do that you need remember whatsomeval
is with a copy. How else would you return the original value while updating it if the original value wasn't stored somewhere?