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).