Uniones

En C, las uniones deben tener nombre. En C++ existen las llamadas uniones libres, o sin nombre:

#include <iostream.h>
struct aircraft {
  int wingspan;
  int passengers;
  union {
    float fuel_load;
    float bom_load;
    int pallets;
  }; }fighter, bomber, transport;

main()
{
  fighter.wingspan = 40;
  fighter.passengers = 1;
  fighter.fuel_load = 12000.0;

  bomber.wingspan = 90;
  bomber.passengers = 12;
  bomber.bomb_load = 14000.0;

  transport.wingspan = 106;
  transport.passengers = 4;
  transport.pallets = 42;

  transport.fuel_load = 18000.0;
  fighter.pallets = 4;
  cout << "The fighter carries:" << fighter.pallets << "pallets.\n " ;
  cout << "The bomber bomb load is " <<bomber.bomb_load << '\n';
}

La salida de este programa es:

The fighter carries 4 pallets.
The bomber bomb load is 14000.

Hemos declarado una unión sin darle un nombre y dentro de una estructura. En ANSI C, hubiésemos tenido que darle un nombre, y para acceder a sus miembros hubiésemos tenido que utilizar un nombre triple (tres nombres separados por puntos). Como la unión del ejemplo no tiene nombre, las variables se acceden al igual que los miembros de una clase o de una estructura.
Una unión hace que los datos contenidos en ella se guarden en la misma localización de memoria, de forma que sólo una variable se dis

Free Web Hosting