Maybe writing down the workings in pseudo-code of the operators for int
makes it more clear:
prefix:
int& Prefix(int& val)
{
int& value = val;
value += 1;
return value;
}
postfix:
int Postfix(int& val)
{
int oldValue = val;
val += 1;
return oldValue;
}
The difference is in what is returned by the two operators, one by value and one by reference.