Freigeben über


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;
}
  

Siehe auch

Referenz

Unions