I tutor students in C++, and recently came across a problem involving pointer arithmetic with array names. The main thing I\'m confused about is the statement
Precedence is only a rule for how the code should be parsed. ++
comes first, and *
comes second. But when the code is executed, you have to consider what the operators actually do.
In your case, the following happens:
begin
is made.min_value
.That's just how the post-increment operator works, and it's also how you write the operator when you overload it for your own types:
T operator++(int)
{
T copy = *this;
++(*this);
return copy;
}
Actually, in the case of the built-in post-increment operator, incrementation does not necessarily have to be step 2. It could also happen at a later point, as long as the observable behaviour is the same. For example, nothing stops the compiler from incrementing the original value after it has returned the copy. You could not perform such a thing in your own, overloaded operator, of course.