You are currently browsing the daily archive for Agosto 17th, 2008.

Le unioni fanne parte del linguaggio C e ovviamente vengono ereditate anche dal successore C++. Il C++ permette di usare le unioni come se fossero delle classi, con alcune restrizioni, come per esempio:

  • Non possono ereditare proprietà da altre classi
  • Non possono contenere funzioni membro virtuali
  • Nessuna variabile static può essere membro di un unione
  • Nessun membro dell’unione può avere un overloading all’operatore =
  • Un unione non può essere presa come classe base o genitore

Le unioni possono contenere sia dati che funzioni. Però esiste anche in C++ un particolare uso delle unioni, che vengono detto unioni anonime. Si tratta di unioni che possono contenere solo dati, che come di regola condividono la stessa area di memoria. Questi dati all’interno dell’unione anonima, hanno l’unica caratteristica di avere in comune la stessa area di memoria, del resto è come se fossero delle normali variabili con il normale campo di visibilità delle altre che si trovano fuori l’unione. Infatti, non vi è alcun bisogno per andare a lavorare su un mbro di tale unioni adoperando una dichiarazione e il dot (.) e non vi è alcun bisogno di dare un nome all’unione, ma basta usare la parola chiave union!

Tutto avviene automaticamente, come normali variabili, ecco un esempio:

//unione anonima
union {
long l;
double d;
}

//accesso diretto ai membri dell’unione anonima
l = 10000;
d = 123.2345;

cout << l << ” ” << d << “\n”;

C’è da ricordarsi che le unioni anonime non possono conterere membri private o protected, e inoltre se dichiarata come globale, i dati devono essere preceduti dal modificatore static.

Post più letti

Blog Stats

  • 1,458 hits

 

Agosto: 2008
L M M G V S D
« Giu   Nov »
 123
45678910
11121314151617
18192021222324
25262728293031