[ vladaboy93 @ 12.08.2007. 18:58 ] @
Nije mi jasna ni svrha ni koriscenje?
[ 1jedini @ 13.08.2007. 09:39 ] @
Npr :

Kolicina memorije je kriticna a hoces da radis sa podacima promenjivog tipa
Code:

struct Podatak
 {
  int type;
  union 
   {
    int i;
    float f;
   }p;
 };

Podatak pi, pf;
pi.type =0;  pi.p.i =123;  
pf.type =1;  pf.p.f =0.123;  



Da na dva razlicita nacina pristupis istim podacima:

Code:

union Boja
 {
  unsigned char a[3];
  struct
   {
    unsigned char r;
    unsigned char g;
    unsigned char b;
  }
 };

Boja b;

b.a[0] = 10;
b.r = 15;


Ako sam negde pogresio u sintaksi, to se da lako ispraviti
[ prog @ 13.08.2007. 18:08 ] @
- Unija je korisnicki tip podataka (kao i klasa samo u ogranicavajucoj formi), te u svakom momentu sadrži samo
jedan objekt iz liste njenih clanova.

- Ona se koristi kada zelimo imati neki tip koji kada ga jednom deklarišemo moze biti razlicit u svakom momentu.

- Velicina tipa unije iznosi onoliko koliko iznosi njen najveći član.

NPR:
Code:

union DATATYPE    // Deklaracija tipa unije
{
   char   ch;
   int    i;
   long   l;
   float  f;
   double d;
} ;

uniju deklarisemo :
Code:

DATATYPE varijabla1; 


Uniji kada zelimo pridruziti neku vrijednost ona moze biti bilo kojeg tipa njenih članova,
tj. moze biti bilo kojeg tipa koji su gore navedeni, char, int, long,float,double.

NPR:
Code:

varijabla1.i=15;
u ovom slucaju unija je tipa int.

Medjutim mozemo pisati:

Code:
 varijabla1.d=4.567;
, sada je unija tipa double.
Kada smo uniji pridruzili vrijednost 4.567,
tada vise unija ne sadrzi vrijednost varijabla1.i=15.
[ vladaboy93 @ 13.08.2007. 19:44 ] @
Zanimljivo...

Sve mi je jasno puno vam hvala!!!
[ DjoleReject @ 05.09.2007. 12:46 ] @
Cisto da pomenem jednu stvar koju sam tek nedavno saznao: Ni jedan member unije ne sme imati default konstruktor ili assignment operator (operator = ). Smarala me greska dugo, nisam imao pojma zasto, a onda izguglam error i nadjem na MSDNu ovu cinjenicu.
Da li bi neko mogao objasniti cemu sluzi ovakvo pravilo u samom jeziku. To jest, sa teoretske strane, sta bi falilo da mozes praviti objekte kako ti hoces?
[ NastyBoy @ 05.09.2007. 20:45 ] @
Zato shto tako kazhe The Holy Standard:
Citat:
An object of a class with a non-trivial constructor (class.ctor), a non-trivial copy constructor (class.copy), a non-trivial destructor (class.dtor), or a non-trivial copy assignment operator (over.ass, class.copy) cannot be a member of a union, nor can an array of such objects."



Narodski recheno: samo POD mozhe da bude chlan unije. Ako bi chlan imao konstruktor ne bi mogao da garantujesh shta ce se desiti u memoriji tokom konstrukcije tih objekata zato shto se svi ti objekti preklapaju i konstruktor jednog objekta pri promeni sopstvenog stanja bi nenamerno promenio i stanje ostalih objekata koji dele to parche memorije, i tako u krug. Zamisli horor kada bi npr. vftp-ovi takvih klasa preklopili...
[ Nikolas_bg @ 10.09.2007. 10:02 ] @
Jel moze neko da postavi neki primer , gde se unije primenjuju ???