C++-Programmierung/ Im Zusammenhang mit Klassen/ Platzsparend – Eine Union

Aus Wikibooks

Wechseln zu: Navigation, Suche


Eine Union ist eine Vereinigung verschiedener Typen auf einer Adresse. Dies erleichtert Redefinitionen oder die Verwendung von Variantentypen. Sie nimmt nicht mehrere Elemente nebeneinander auf, sondern zu jedem Zeitpunkt immer nur eines. Wird eine der Definitionsvarianten initialisiert, so werden die anderen damit implizit initialisiert, da sie auf der gleichen Adresse beginnen. Sie wird mit dem Schlüsselwort union deklariert:

Crystal Clear app terminal.png
union _Union1
{
  int a;
  float b;
  char[4] caC; // 32bit float/int angenommen
};

Beispiel zur Verwendung:

Crystal Clear app terminal.png
_Union1 u1;   // Instanz erzeugen
u1.a = 10;  // jetzt ist in u1 ein int gespeichert
u1.b = 2.5; // jetzt ein float
            // damit hat u1.a möglicherweise keinen sinnvollen Wert mehr
ofstream DateiStream("xxx.data");
DateiStream << u1.caC; // Damit wird der Dateninhalt als Rohdaten verwendet

Bei Einsatz von Datenstrukturen mit fester Ausrichtung und kann hilfs einer union die gesamte Datensammlung als Rohdaten aus dem Speicher betrachtet werden. Zum Beispiel mit einer anonymen union die eine Datensammlungsstruktur enthält und einen direkt ansprechbaren Zeiger auf deren Rohdaten.

Persönliche Werkzeuge