[ vladaboy93 @ 12.08.2007. 18:58 ] @
Nije mi jasna ni svrha ni koriscenje? |
[ vladaboy93 @ 12.08.2007. 18:58 ] @
[ 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: u ovom slucaju unija je tipa int. varijabla1.i=15; Medjutim mozemo pisati: Code: , sada je unija tipa double. varijabla1.d=4.567; 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 ???
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|