Condividi tramite


Unioni

In unione è un tipo definito dall'utente di classe o di dati che, in un determinato momento, contiene solo un oggetto dal relativo elenco di membri (sebbene tale oggetto può essere un tipo di classe o della matrice).

union [tag] { member-list } [declarators];
[union] tag declarators;

Parametri

  • tag
    Il nome del tipo fornito un'unione.

  • member-list
    Elenco di tipi di dati che l'unione può contenere.Vedere la sezione Osservazioni.

  • declarators
    Elenco dei dichiaratori che specifica i nomi dell'unione.Per ulteriori informazioni, vedere Cenni preliminari sui dichiaratori.

Note

elenco membri di un'unione rappresenta i tipi di dati che l'unione può contenere.Un'unione richiede sufficiente archiviazione di utilizzare più grande membro in l elenco membri.Per ulteriori informazioni, fare riferimento a Dichiarazioni di unione (linguaggio C fa riferimento).

Dichiarazione dell'unione

Iniziare la dichiarazione di un'unione con la parola chiave di unione e contiene l'elenco dei membri in parentesi graffe:

// declaring_a_union.cpp
union DATATYPE    // Declare union type
{
    char   ch;
    int    i;
    long   l;
    float  f;
    double d;
} var1;          // Optional declaration of union variable

int main()
{
}

Utilizzo di un'unione

L'unione C++ è un form limitato del tipo della classe.Può contenere gli identificatori di accesso (pubblico, protetto, privato), dati dei membri e funzioni membro, inclusi i costruttori e distruttori.Non può contenere le funzioni virtuali o i membri dati statici.Non può essere utilizzata come classe base, né può avere classi base.L'accesso predefinito dei membri in un'unione è pubblico.

Il tipo di unione C/C++ può contenere solo membri dati.

In C#, è necessario utilizzare unione parola chiave per dichiarare una variabile di unione.in C++, unione la parola chiave non è necessario:

union DATATYPE var2;   // C declaration of a union variable
DATATYPE var3;         // C++ declaration of a union variable

Una variabile di un tipo di unione può contenere un valore di qualsiasi tipo dichiarato nell'unione.Utilizzare l'operatore di selezione dei membri (.) accedere a un membro di un'unione:

var1.i = 6;           // Use variable as integer
var2.d = 5.327;       // Use variable as double 

È possibile dichiarare e inizializzare un'unione nella stessa istruzione di assegnazione un'espressione racchiusa tra parentesi graffe.L'espressione viene valutata e assegnata al primo campo dell'unione.

Esempio

// using_a_union.cpp
#include <stdio.h>

union NumericType
{
    int         iValue;
    long        lValue;  
    double      dValue;  
};

int main()
{
    union NumericType Values = { 10 };   // iValue = 10
    printf_s("%d\n", Values.iValue);
    Values.dValue = 3.1416;
    printf_s("%f\n", Values.dValue);
}

Output

10
3.141600

NumericType l'unione è definita in memoria (concettualmente) come illustrato di seguito.

Archiviazione dei dati nell'unione di NumericType

Archiviazione dei dati di unione di tipo numerico

Vedere anche

Riferimenti

Classi, strutture e unioni

Parole chiave C++

Unioni anonime

classe (C++)

struct (C++)