Overload dell'operatore ++

di il
3 risposte

Overload dell'operatore ++

Salve!
Mi sono imbattuto nella seguente difficoltà: a lezione mi è stato spiegato che per effettuare l'overload dell'operatore ++ si deve distinguere tra pre-incremento e post-incremento.
Faccio riferimento a una classe molto semplice, di 3 interi (x,y,z), che chiamo "punto".
Per effettuare un pre-incremento è sufficiente una sintassi come
punto punto::operator ++() {return(*this ++);
Per il post-incremento, invece, mi è stato detto che bisogna ricorrere a un "trucco":
punto punto::operator ++(int) {punto temp; x++; y++; z++; return(temp); }
Tutto ciò funziona quasi sempre, infatti ho notato che nel caso dell'istruzione
x=x++;
nel caso di un int restituisce x+1, nel caso di un punto restituisce x.

Il problema risiede nel fatto che quello definito non è davvero un "post-incremento", infatti l'incremento viene fatto prima, ma poi viene "nascosto" e si ritorna il valore precedente.

Come si può definire un reale post-incremento con queste istruzioni?
Grazie

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte