Riferimenti C ++

Una variabile di riferimento è un alias, ovvero un altro nome per una variabile già esistente. Dopo che un riferimento è stato inizializzato con una variabile, è possibile utilizzare il nome della variabile o il nome del riferimento per fare riferimento alla variabile.

Riferimenti vs puntatori

I riferimenti sono spesso confusi con i puntatori, ma le tre principali differenze tra riferimenti e puntatori sono:

  • Non puoi avere riferimenti NULL. Devi sempre essere in grado di presumere che un riferimento sia collegato a un archivio legittimo.

  • Una volta inizializzato un riferimento a un oggetto, non può essere modificato per fare riferimento a un altro oggetto. I puntatori possono essere puntati su un altro oggetto in qualsiasi momento.

  • Un riferimento deve essere inizializzato quando viene creato. I puntatori possono essere inizializzati in qualsiasi momento.

Creazione di riferimenti in C ++

Pensa al nome di una variabile come a un'etichetta attaccata alla posizione della variabile in memoria. Puoi quindi pensare a un riferimento come una seconda etichetta attaccata a quella posizione di memoria. Pertanto, è possibile accedere al contenuto della variabile tramite il nome della variabile originale o il riferimento. Ad esempio, supponiamo di avere il seguente esempio:

int i = 17;

Possiamo dichiarare le variabili di riferimento per i come segue.

int& r = i;

Leggi il & in queste dichiarazioni come reference. Quindi, leggi la prima dichiarazione come "r è un riferimento intero inizializzato su i" e leggi la seconda dichiarazione come "s è un riferimento doppio inizializzato su d.". L'esempio seguente fa uso di riferimenti su int e double -

#include <iostream>
 
using namespace std;
 
int main () {
   // declare simple variables
   int    i;
   double d;
 
   // declare reference variables
   int&    r = i;
   double& s = d;
   
   i = 5;
   cout << "Value of i : " << i << endl;
   cout << "Value of i reference : " << r  << endl;
 
   d = 11.7;
   cout << "Value of d : " << d << endl;
   cout << "Value of d reference : " << s  << endl;
   
   return 0;
}

Quando il codice precedente viene compilato insieme ed eseguito, produce il seguente risultato:

Value of i : 5
Value of i reference : 5
Value of d : 11.7
Value of d reference : 11.7

I riferimenti vengono solitamente utilizzati per elenchi di argomenti di funzioni e valori restituiti dalle funzioni. Di seguito sono riportati due argomenti importanti relativi ai riferimenti C ++ che dovrebbero essere chiari a un programmatore C ++:

Suor n Concetto e descrizione
1 Riferimenti come parametri

C ++ supporta il passaggio di riferimenti come parametri di funzione in modo più sicuro rispetto ai parametri.

2 Riferimento come valore restituito

Puoi restituire un riferimento da una funzione C ++ come qualsiasi altro tipo di dati.