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