quando passare argomenti di funzione per riferimento e quando per indirizzo?
Domanda
Qualcuno potrebbe spiegare con alcuni esempi quando è meglio chiamare le funzioni per riferimento e quando è meglio chiamare per indirizzo?
Soluzione
Passa i tuoi argomenti per funzionare usando il riferimento ogni volta che è possibile. Passare argomenti per riferimento elimina la possibilità che siano NULL. Se vuoi che sia possibile passare il valore NULL a una funzione, usa il puntatore.
Altri suggerimenti
Questo è già stato discusso. Vedi Puntatore vs. riferimento .
Una bella convenzione è:
- Passa gli oggetti tramite puntatore ogni volta che possono essere manipolati ( effetto collaterale o come output ) dalla funzione.
- Passa tutti gli altri oggetti per riferimento const .
Questo rende molto chiaro al chiamante, con una documentazione minima e costi di prestazione zero, quali parametri sono costanti o meno.
Puoi applicarlo anche ai tipi primitivi, ma è discutibile se sia necessario utilizzare i riferimenti const per i parametri non output, poiché sono chiaramente pass-by-value e non possono agire come output della funzione in alcun modo (per tipi diretti - non puntatori / riferimenti - ovviamente).