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