Non sono d'accordo; i reference hanno a loro volta una serie di vantaggi dalla loro. In primo luogo, un parametro reference consente di evitare di usare l'odiosa sintassi var-> o (*var). necessaria per accedere ai membri di una variabile passata per puntatore; inoltre l'uso dei reference consente di utilizzare oggetti che dispongono di operatori in overload senza doverli dereferenziare.Originariamente inviato da p91paul
Per questo è preferibile utilizzare i puntatori perchè, anche nella chiamata della funzione risulti evidente che quella funzione modificherà il valore della variabile passata.
Inoltre i reference rendono evidente la semantica di proprietà dell'oggetto passato: dal momento che la funzione chiamata riceve un riferimento, sa con certezza che non tocca a lei deallocarlo; inoltre ad un riferimento non è possibile passare NULL senza andare nella landa dell'undefined behavior, per cui è evidente che il parametro in questione non è opzionale e non ci si può passare NULL.
Infine, l'uso dei const reference consente di combinare i vantaggi del passaggio per valore (la variabile originale non viene modificata, non serve * e -> per accedere ai membri) e l'efficienza del passaggio per puntatore (non vengono effettuate copie che in caso di oggetti "pesanti" possono essere onerose).