Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

In medicina molti discorsi sono un labirinto lastricato di parole sulle quali si scivola come su bucce di banana.

F. A. Nash 

Sondaggio:

Quale radio ascolti solitamente?

Radio Rai
Radio Deejay
Radio Italia
Disco Radio
Radio Dimensione Suono
Radio Montecarlo
RTL 102.5
Altro

visualizza risultati


 

Uso dei reference

I riferimenti sono stati introdotti nel C++ come ulteriore meccanismo di passaggio di parametri (per riferimento).
Una funzione che debba modificare i parametri attuali puo` ora essere dichiarata in due modi diversi:

 

void Esempio(Tipo* Parametro);

 

oppure in modo del tutto equivalente

 

void Esempio(Tipo& Parametro);

 

Naturalmente cambierebbe il modo in cui chiamare la funzione:

 

long double Var = 0.0;
long double* Ptr = &Var;

// nel primo caso avremmo
Esempio(&Var);

// oppure
Esempio(Ptr);

// nel caso di passaggio per riferimento
Esempio(Var);

// oppure
Esempio(*Ptr);

 

In modo del tutto analogo a quanto visto con i puntatori e` anche possibile ritornare un riferimento:

 

double& Esempio(float Param1, float Param2) {
/* ... */
double* X = new double;
/* ... */
return *X;
}

 

Puntatori e reference possono essere liberamente scambiati, non esiste differenza eccetto che non e` necessario dereferenziare un riferimento e che i riferimenti non possono associati ad un'altra variabile dopo l'inizializzazione.
Probabilmente vi starete chiedendo che motivo c'era dunque di introdurre questa caratteristica dato che i puntatori erano gia` sufficienti. Il problema in effetti non nasce con le funzioni, ma con gli operatori; il C++ consente anche l'overloading degli operatori e sarebbe spiacevole dover scrivere qualcosa del tipo:

 

&A + &B

 

non si riuscirebbe a capire se si desidera sommare due indirizzi oppure i due oggetti (che potrebbero essere troppo grossi per passarli per valore). I riferimenti invece risolvono il problema eliminando ogni possibile ambiguita` e consentendo una sintassi piu` chiara.

 

successivo
–«  INDICE  »–

 

 

 

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