Riferimenti

Adesso puoi trasmettere per riferimento i parametri ad una funzione. Significa che quando modifichi il parametro all'interno della funzione, anche la variabile trasmessa sarà modificata. Quello che avviene in realtà è sempre un passaggio di puntatori, ma con i reference non è più necessario referenziare il puntatore passato per ottenerne il valore: il referenziamento è "automatico". Per specificare che un parametro sarà referenziato implicitamente, occorre solo mettere un & tra il tipo e il nome del parametro:
void A (int number)      // passaggio per valore. Dentro la funzione,
{                        // number è un'altra variabile
  number *= 2;
}
void B (int & number)    // per riferimento. La variabile stessa sarà modificata
{
  number *= 2;
}
int a = 5;
A (a);              // a non modificata
B (a);              // a modificata
Possiamo confrontare il nuovo metodo con il passaggio di puntatori (usato in C). Ma è più potente. Il compilatore lo ottimizzerà meglio (forse). Il codice è molto più facile da scrivere, basta solo aggiungere un & per passare per riferimento invece che per valore.

Mentre se vuoi passare puntatori di puntatori, non puoi usare riferimenti di riferimenti, che non ha senso.

I riferimenti sono sempre usati nei costruttori di copia per ottenere un riferimento all'oggetto base (la sorgente della copia).


C++