Condividi tramite


Inizializzare i riferimenti

Le variabili di tipo riferimento devono essere inizializzate con un oggetto del tipo da cui il tipo riferimento viene derivato, o a un oggetto di un tipo che può essere convertito nel tipo da cui il tipo riferimento viene derivato.Di seguito è riportato un esempio:

// initializing_references.cpp
int iVar;
long lVar;
int main() {
   long& LongRef1 = lVar;   // No conversion required.
   long& LongRef2 = iVar;   // C2440
   const long& LongRef3 = iVar;   // OK
   LongRef1 = 23L;   // Change lVar through a reference.
   LongRef2 = 11L;   // Change iVar through a reference.
   LongRef3 = 11L;   // C3892
}

L'unico modo per inizializzare un riferimento a un oggetto temporaneo viene di inizializzare un oggetto temporaneo costante.Una volta che vengono inizializzati, i punti di una variabile di tipo di riferimento allo stesso oggetto sempre; non può essere modificata per indicare un altro oggetto.

Sebbene la sintassi possa essere la stessa, l'inizializzazione di variabili di tipo di riferimento e l'assegnazione alle variabili dei tipi di riferimento sono semanticamente diversi.Nell'esempio precedente, le assegnazioni che cambiano iVar e lVar per renderli simili alle inizializzazioni, ma avere effetti diversi.L'inizializzazione specifica l'oggetto a cui punta variabili di tipo di riferimento; l'assegnazione viene assegnato all'oggetto restituito un oggetto con il riferimento.

Poiché sia passare un argomento di tipo riferimento a una funzione che restituisce un valore di tipo riferimento da una funzione sono inizializzazioni, gli argomenti formali di una funzione vengono inizializzati correttamente, così come i riferimenti restituiti.

Variabili di tipo di riferimento possono essere dichiarate senza inizializzatori solo in quanto segue:

  • Dichiarazioni di funzione (prototipi).Di seguito è riportato un esempio:

    int func( int& );
    
  • Dichiarazioni di tipo restituito dalla funzione.Di seguito è riportato un esempio:

    int& func( int& );
    
  • Dichiarazione di un membro della classe del tipo di riferimento.Di seguito è riportato un esempio:

    class c {
    public:
       int& i;
    };
    
  • Dichiarazione di un oggetto specificato in modo esplicito variabile come extern.Di seguito è riportato un esempio:

    extern int& iVal;
    

Durante l'inizializzazione di una variabile di tipo di riferimento, viene utilizzato il grafico di decisione illustrato nella figura che segue per scegliere tra la creazione di un riferimento a un oggetto o creare un oggetto temporaneo di cui punta il riferimento.

Grafico di decisione di inizializzazione dei tipi di riferimento

Tipi di riferimento per l'inizializzazione nel grafico delle decisioni

riferimenti a volatile tipi (dichiarati come volatile typename& identificatore) può essere inizializzato con volatile oggetti dello stesso tipo o con gli oggetti che non sono stati dichiarati come volatile.non possono, tuttavia, essere inizializzati con const oggetti di tale tipo.Analogamente, riferimenti a const tipi (dichiarati come const typename& identificatore) può essere inizializzato con const gli oggetti dello stesso tipo (o tutto ciò che contenga una conversione del tipo o con gli oggetti che non sono stati dichiarati come const).non possono, tuttavia, essere inizializzate con volatile oggetti di tale tipo.

Riferimenti che non sono qualificati con nessuna const o volatile la parola chiave può essere inizializzato solo con gli oggetti dichiarati come nessuno const né volatile.

Vedere anche

Riferimenti

Inizializzatori