Originariamente inviato da giuseppe500
ciao.
mi devo creare un piccolo promemoria su come utilizzare i reference e il const.
1)quando devo invocare una funzione che agisce(cambia o imposta il valore)su di un mio oggetto e le modifiche devono persistere al di fuori della funzione A non devo utilizzare i const in quanto devo cambiare il valore .
posso usare :
1)passare un puntatore e modificarlo
f(oggetto * pobj)
pobj = valore
2)creare nei parametri della funzione un reference del tipo :
f(oggetto& obj)
obj = valore
tra l'altro coi reference penso di aver capito che mi semplifica la vita in quanto non devo distruggere l'oggetto col delete
Con i reference la consuetudine č che il chiamante si preoccupi dell'eventuale cancellazione dell'oggetto (il chiamato deve soltanto usare il parametro reference, non lo deve eliminare); con i puntatori invece dipende dal "contratto" specificato nella documentazione. Dato che un puntatore non documentato č un'ambiguitā, in genere č meglio usare i reference se la proprietā dell'oggetto rimane al chiamante o uno smart pointer con trasferimento di ownership (stile auto_ptr) se la proprietā passa al chiamato.
se invece devo utilizzare un oggetto senza modificarlo devo utilizzare i const , qui nascono i miei problemi , che tipo di const e da cosa dipende .
Sul const, ti consiglio di leggerti queste FAQ, ripassa a chiedere se hai dubbi.