Unions
Union ist, benutzerdefinierte Daten oder Klassentyp, die zu einem beliebigen Zeitpunkt nur ein Objekt aus der Liste der Member enthält (obwohl dieses Objekt ein Array oder einen Klassentyp sein kann).
union [tag] { member-list } [declarators];
[union] tag declarators;
Parameter
tag
Der Typname angegeben für die Union.member-list
Liste mit den Arten von Daten, die die Gesamtmenge enthalten kann.Siehe Hinweise.declarators
Deklaratoren aufgelistet, die die Namen der Union angibt.Weitere Informationen finden Sie unter Übersicht über Deklaratoren.
Hinweise
Die Memberliste einer Union stellt die Arten von Daten dar, die die Gesamtmenge enthalten kann.Eine Union muss genügend Speicher, den größten Member in der Memberlisteenthält.Weitere Informationen finden Sie unter Unions-Deklarationen (Programmiersprache C-Verweis)an.
Eine Union deklarieren
Beginnen Sie die Deklaration einer Union mit dem Schlüsselwort, Unions und legen Sie die Memberliste in Klammern an:
// 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()
{
}
Verwenden einer Union
Union Ein C++-Compiler ist eine eingeschränkte Form des Klassentyps.Er kann Zugriffsspezifizierer (öffentlich, privat, geschützt), Memberdaten und Memberfunktionen, z. B. Konstruktoren und Destruktoren enthalten.Es kann virtuelle Funktionen oder statische Datenmember enthalten.Er kann nicht als Basisklasse verwendet werden, noch kann es Basisklassen aufweisen.standardmäßigen Zugriff von Membern in einer Union ist öffentlich.
Datenmember kann nur Wechselstrom-Union-Typ enthalten.
In C# müssen Sie das Union union Schlüsselwort verwenden, um eine Variable zu deklarieren.In C++ ist das Union-Schlüsselwort erforderlich:
union DATATYPE var2; // C declaration of a union variable
DATATYPE var3; // C++ declaration of a union variable
Eine Variable eines Union-Typs kann den Wert eines beliebigen Typs enthalten, der in der Union deklariert ist.Verwenden Sie den Member Auswahl Operator (.), um einen Member einer Union zu verweisen:
var1.i = 6; // Use variable as integer
var2.d = 5.327; // Use variable as double
Sie können eine Union in derselben Anweisung deklarieren und initialisieren, indem Sie einen Ausdruck zuweisen, der in geschweifte Klammern eingeschlossen wird.Der Ausdruck wird dem ersten Feld ausgewertet und Union zugewiesen.
Beispiel
// 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
Die Union ist NumericType konzeptionell (im Arbeitsspeicher), wie in der folgenden Abbildung dargestellt angeordnet.
Datenspeicherung in NumericType-Union