Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

O tempora, O mores! Che tempi! Che costumi!

Marco Tullio Cicerone 

Sondaggio:

Quale genere musicale preferisci?

latino americana
dance
rock
hip pop
heavy metal
techno
classica
leggera

visualizza risultati


 

Puntatori vs reference

Visto che per le funzioni e` possibile scegliere tra puntatori e riferimenti, come decidere quale metodo scegliere? I riferimenti hanno un vantaggio sui puntatori, dato che nella chiamata di una funzione non c'e` differenza tra passaggio per valore o per riferimento, e` possibile cambiare meccanismo senza dover modificare ne` il codice che chiama la funzione ne` il corpo della funzione stessa. Tuttavia il meccanismo dei reference nasconde all'utente il fatto che si passa un indirizzo e non una copia, e cio` puo` creare grossi problemi in fase di debugging.

Quando e` necessario passare un indirizzo e` quindi meglio usare i puntatori, che consentono un maggior controllo sugli accessi (tramite la keyword const) e rendono esplicito il modo in cui il parametro viene passato. Esiste comunque una eccezione nel caso dei tipi definiti dall'utente tramite il meccanismo delle classi. In questo caso vedremo che l'incapsulamento garantisce che l'oggetto passato possa essere modificato solo da particolari funzioni (funzioni membro e funzioni amiche), e quindi usare i riferimenti e` piu`conveniente perche` non e` necessario dereferenziarli, migliorando cosi` la chiarezza del codice; le funzioni membro e le funzioni amiche, in quanto tali, sono invece autorizzate a modificare l'oggetto e quindi quando vengono usate l'utente sa gia` che potrebbero esserci effetti laterali.

Non si tratta comunque di una regola generale, come per tante altre cose, i progettisti del linguaggio hanno pensato di non limitare l'uso dei costrutti con rigide regole e schemi predefiniti, ma di lasciare al buon senso del programmatore il compito di decidere quale fosse di volta in volta la soluzione migliore.

 

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2019 Cataldo Sasso