So che questo problema è stato discusso più volte, ma non sono riuscito a trovare un post che spieghi perché è necessario eseguire una copia in caso di operazione di incremento.Perché post-incremento è necessario eseguire una copia mentre pre-incremento non è
Citando una risposta StackOverflow:
int j = i++; // j will contain i, i will be incremented.
int j = ++i; // i will be incremented, and j will contain i+1.
Il che rende perfettamente senso quando si considera la definizione di post/pre incremento. Molte volte confrontando le prestazioni di incremento pre/post si dice che l'incremento post deve fare una copia, incrementarlo e restituire la copia mentre il pre-incremento aumenta semplicemente il valore e non crea una copia.
Sebbene le prestazioni siano state confrontate in decine di post, non sono riuscito a trovare alcuna spiegazione sul perché una copia debba essere eseguita in caso di post-incremento. Perché non restituisce il vecchio valore e quindi incrementa il valore della variabile di uno (o comunque il modo in cui l'operatore è sovraccarico), piuttosto che creare un nuovo oggetto e restituirlo.
Poiché il post-incremento deve mantenere il valore precedente in un valore temporaneo in modo da restituirlo in seguito. – 101010
'Perché non restituisce il vecchio valore e quindi incrementa il valore della variabile di uno? Come si incrementa il valore se è già stato restituito dalla funzione? –
@RaphaelMiedl grazie raphael, questo era esattamente il punto che mi mancava. Sapevo che era qualcosa di molto banale :) – ralzaul