Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un riferimento, analogamente a un puntatore, archivia l'indirizzo di un oggetto che si trova in un'altra posizione in memoria. A differenza di un puntatore, un riferimento dopo l'inizializzazione non può essere fatto per fare riferimento a un oggetto diverso o impostato su Null. Esistono due tipi di riferimenti: riferimenti lvalue , che fanno riferimento a una variabile denominata e riferimenti rvalue , che fanno riferimento a un oggetto temporaneo. L'operatore & indica un riferimento lvalue e l'operatore && indica un riferimento rvalue o un riferimento universale (rvalue o lvalue) a seconda del contesto.
È possibile dichiarare i riferimenti tramite la seguente sintassi:
[storage-class-specifiers] [cv-qualificatori] type-specifiers [ms-modifier] declarator [
=expression];
È possibile utilizzare qualsiasi dichiaratore valido che specifica un riferimento. A meno che il riferimento non sia un riferimento al tipo di funzione o di matrice, si applica la sintassi seguente semplificata:
[storage-class-specifiers] [cv-qualificatori] type-specifiers [
&o&&] [cv-qualificatori] identificatore [=espressione];
I riferimenti vengono dichiarati tramite la seguente sequenza:
Gli identificatori di dichiarazione:
- Identificatore della classe di archiviazione facoltativo.
- Qualificatori facoltativi
conste/ovolatile. - Il tipo di identificatore: il nome di un tipo.
Dichiaratore:
Modificatore specifico di Microsoft facoltativo. Per altre informazioni, vedere Modificatori specifici di Microsoft.
&Operatore o&&operatore.Qualificatori e/o
constfacoltativivolatile.Identificatore.
Inizializzatore facoltativo.
I moduli dichiarativi più complessi per i puntatori a matrici e funzioni si applicano anche ai riferimenti a matrici e funzioni. Per altre informazioni, vedere Puntatori.
Più dichiaratori e inizializzatori possono essere visualizzati in un elenco separato da virgola che segue un singolo identificatore di dichiarazione. Ad esempio:
int &i;
int &i, &j;
I riferimenti, i puntatori e gli oggetti possono essere dichiarati insieme:
int &ref, *ptr, k;
Un riferimento contiene l'indirizzo di un oggetto, ma dal punto di vista sintattico si comporta come un oggetto.
Nel seguente programma osservare come il nome dell'oggetto, s e il riferimento all'oggetto, SRef, possano essere utilizzati in modo identico nei programmi:
Esempio
// references.cpp
#include <stdio.h>
struct S {
short i;
};
int main() {
S s; // Declare the object.
S& SRef = s; // Declare and initialize the reference.
s.i = 3;
printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);
SRef.i = 4;
printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);
}
3
3
4
4
Vedi anche
Argomenti della funzione tipo-riferimento
Elementi restituiti dalla funzione tipo-riferimento
Riferimenti a puntatori