Per consentire la concatenazione degli assegnamenti. Se gli operatori di assegnamento non restituissero l'oggetto che si trova alla sinistra dell'uguale non sarebbe possibile scrivere codice comeOriginariamente inviato da valder
Salve ragazzi,avrei dei problemi con questo argomento. Non ho capito perchè quando in una classe per esempio ridefinisco un operatore che sia =,+=,-= la funzione deve essere tipo nomeclasse& operator per poi ritornare il this...mentre per gli altri operatori questo non è necessario!
che va letto come:codice:a=b=c=d;
Vedi bene che, se non venisse restituito l'oggetto alla sinistra dell'uguale, la concatenazione di assegnamenti non funzionerebbe.codice:a=(b=(c=d));
Questo dipende dalle scelte di chi ha implementato il metodo in questione...E inoltre,perchè quando per esempio,aggiungo un elemento in una lista all'interno di una classe,perchè a volte trovo che la funzione che è dedicata a questa funzione è di tipo void ,altre di tipo nomeclasse& per poi anche qui ritornare alla fine il this...
In genere è sempre per consentire una sintassi più "snella" e "concatenare" le operazioni: se io faccio sì che il metodo di aggiunta di un elemento restituisca ancora un reference alla lista posso scrivere:Ma se questa funzione è definita nella parte pubblica,che senza ha ritornare l'oggetto generico,se alla fine ogni modifica che apporto alla lista(puntatori in testa ecc)riguardano direttamente i membri della classe?
invece di stare a scrivere:codice:lista.aggiungi(a).aggiungi(b).aggiungi(c);
È sostanzialmente quello che si usa chiamare "zucchero sintattico" - non è nulla di indispensabile, ma consente di scrivere il codice in maniera più comoda.codice:lista.aggiungi(a); lista.aggiungi(b) lista.aggiungi(c);


Rispondi quotando