Anonyme Unions
Anonyme Unions sind Unions, die ohne class-name oder declarator-list deklariert werden.
union { member-list }
Hinweise
Solche Union-Deklarationen deklarieren keine Typen – sie deklarieren Objekte. Die in einer anonymen Union deklarierten Namen dürfen nicht mit anderen Namen in Konflikt stehen, die im selben Gültigkeitsbereich deklariert wurden.
In C kann eine anonyme Union ein Tag, jedoch keine Deklaratoren aufweisen.
Die in einer anonymen Union deklarierten Namen werden, wie Nichtmembervariablen, direkt verwendet.
Zusätzlich zu den Einschränkungen, die in Union-Member-Daten aufgeführt sind, unterliegen anonyme Unions zusätzlichen Einschränkungen:
Sie müssen auch als static deklariert werden, wenn sie im Dateigültigkeitsbereich deklariert werden. Wenn sie im lokalen Gültigkeitsbereich deklariert werden, müssen sie statisch oder automatisch sein.
Sie dürfen nur öffentliche Member besitzen; private und geschützte Member in anonymen Unions generieren Fehler.
Sie dürfen keine Funktionsmember aufweisen.
Hinweis
Eine anonyme Union kann nicht einfach durch Weglassen des Teils class-name zur Union werden.Damit eine Union als anonyme Union qualifiziert wird, darf die Deklaration kein Objekt deklarieren.
Beispiel
// anonymous_unions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
union {
int d;
char *f;
};
d = 4;
cout << d << endl;
f = "inside of union";
cout << f << endl;
}