Freigeben über


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

Union-Datenspeicher für numerische Typen

Siehe auch

Referenz

Klassen, Strukturen und Unions

C++-Schlüsselwörter

Anonyme Unions

Klasse (C++)

Struktur (C++)