Riferimenti (C++)
È possibile dichiarare i riferimenti tramite la seguente sintassi:
[storage-class-specifiers] [cv-qualifiers] 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-qualifiers] type-specifiers &
[cv-qualifiers] identifier [= expression];
I riferimenti vengono dichiarati tramite la seguente sequenza:
1. Gli identificatori di dichiarazione:
Identificatore della classe di archiviazione facoltativo.
I qualificatori facoltativi const e/o volatile.
Il tipo di identificatore: il nome di un tipo.
2. Dichiaratore:
Un modificatore facoltativo specifico di Microsoft. Per ulteriori informazioni, vedere il sito Web Microsoft Modificatori specifici di Microsoft.
Operatore &.
I qualificatori facoltativi const e/o volatile.
Identificatore.
3. Inizializzatore facoltativo.
I form di dichiaratori più complessi per i puntatori a matrici e a funzioni si applicano anche ai riferimenti alle matrici e alle funzioni; vedere gli argomenti relativi ai puntatori e ai dichiaratori.
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, Today e il riferimento all'oggetto, TodayRef, 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 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);
}
Commento
Argomenti contenuti in questa sezione: