Partager via


Unions anonymes

Les unions anonymes sont des unions déclarées sans class-name ou declarator-list.

union   {   member-list   }

Notes

Ces déclarations d'union ne déclarent pas des types mais des objets. Les noms déclarés dans une union anonyme ne peuvent pas être en conflit avec d'autres noms déclarés dans la même portée.

En C, une union anonyme peut avoir une balise mais pas de déclarateurs.

Les noms déclarés dans une union anonyme sont utilisés directement comme les variables non membres.

Outre les restrictions répertoriées dans Données membres d'une union, les unions anonymes sont soumises aux restrictions supplémentaires :

  • Elles doivent également être déclarées comme static si elles sont déclarées dans une portée de fichier. Si elles sont déclarées dans une portée locale, elles doivent être statiques ou automatiques.

  • Elles ne peuvent avoir que des membres publics. Les membres privés et protégés des unions anonymes génèrent des erreurs.

  • Elles ne peuvent pas avoir de membres de fonction.

    Notes

    La simple omission de la partie class-name de la syntaxe ne transforme pas une union en union anonyme.Pour qu'une union soit qualifiée d'union anonyme, la déclaration ne doit pas déclarer d'objet.

Exemple

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

Voir aussi

Référence

Unions