No, è il contrario di quello che hai appena scritto. L'operatore & serve a passare la variabile per riferimento (modifiche permanenti!), mentre se lo lasci via la variabile viene passata per valore (quindi copiata prima di essere passata alla funzione e le modifiche rimangono solo all'interno della funzione).Originariamente inviato da Hirakeydos
Riepilogando, se non voglio che il valore della variabile passata alla funzione venga modificato, uso l'operatore '&' (che, se ho capito bene, equivale nel pascal al non mettere la parola var); altrimenti passo semplicemente il nome della variabile in facondi in modo che le eventuali modifiche ad essa restino permanenti a livello globale (la parola var nel pascal).
La storia del const è legata all'efficienza e alla sicurezza.La storia del const non è proprio chiarissima invece. Credevo che per dichiarare le costanti in C/C++ si usasse #define (es. #define N 5); const che fa di preciso?
Passando una variabile per valore hai il vantaggio che il valore originale della variabile non viene modificato, però questo richiede una copia; nel caso di tipi fondamentali questa copia è veloce, ma nel caso di oggetti di grosse dimensioni può compromettere seriamente l'efficienza del programma.
Passando per valore hai il vantaggio che la variabile non viene copiata (quindi niente tempo di copia!) ma però potrebbe essere modificata accidentalmente.
L'utilizzo di const con la chiamata per riferimento mette assieme i due vantaggi, eliminando gli svantaggi: la variabile non viene copiata (quindi efficenza!) ma la parola chiave const non ti permette di fare modifiche alla variabile (così da non modificare accidentalmente il valore originale). Questo sempre se NON devi/vuoi modificare il valore della variabile. Se ti serve che la funzione cambi il valore della variabile allora questa va passata per riferimento normale (solo con l'operatore &, senza const).
Comunque la direttiva #define, se non ricordo male, viene sconsigliata nel libro Effective C++: 50 Specific Ways to Improve Your Programs and Design (di Scott Meyers). Consigliava di utilizzare comunque const (come variabile globale, quindi fuori dal corpo di qualsiasi funzione) per definire delle costanti globali (non mi ricordo i motivi però!).