Differences between I ++ and ++ I -- suffix operator Efficiency Research -- operator
Differences between I ++ and ++ I
There is no big difference in using built-in types, such as int.
If the object is constructed by class, the difference is quite large.
We must first understand their respective ways of working.
++ I is a prefix operator, which first increments and then returns the value.
I ++ is called a suffix operator. It creates a copy, increments itself, and returns a copy.
The following explains why I ++ is so inefficient.
We can reload the ++ suffix operator to find the problem.
Class Time {public: Time operator ++ (int); Time operator ++ (); private: int sec ;}; Time: operator ++ () {sec ++; return (* this);} Time: operator ++ (int) {Time temp (* this); sec ++; return temp ;}
You can see that in C ++, the prefix reload does not need to create a new object, but the suffix is different. If the suffix needs to return the original value, you have to save a copy to return it, this is the root cause of low I ++ efficiency.