Condividi tramite


Unioni anonime

Le unioni anonime sono unioni che sono dichiarate senza class-name o declarator-list.

union   {   member-list   }

Note

Tali dichiarazioni di unione non dichiarano i tipi ma gli oggetti. I nomi dichiarati in un'unione anonima non devono essere in conflitto con altri nomi dichiarati nello stesso ambito.

In C, un'unione anonima può contenere un tag; non può avere dichiaratori.

I nomi dichiarati in un'unione anonima vengono utilizzati direttamente, come le variabili non membro.

Oltre alle limitazioni elencate in Dati membri di unione, le unioni anonime sono soggette ad ulteriori restrizioni:

  • Devono inoltre essere dichiarate come static se dichiarate nell'ambito file. Se dichiarate nell'ambito locale, devono essere static o automatic.

  • Possono avere solo membri pubblici; i membri privati e protetti nelle unioni anonime generano errori.

  • Non possono avere membri di funzione.

    Nota

    Omettendo semplicemente la parte class-name della sintassi un'unione non diventa anonima.Affinché un'unione venga qualificata come unione anonima, la dichiarazione non deve dichiarare un oggetto.

Esempio

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

Vedere anche

Riferimenti

Unioni