Riferimenti (C++)
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
const
e/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
volatile
facoltativiconst
.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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per