Diskuze: c++ struct vs union
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Struktura ti dovoluje sdružit určité položky, které spolu třeba nějak souvisejí, pod jeden název (jeden celek). Union se používá, pokud víš, že do dané oblasti je možné uložit více různých typů dat, ale platný je nejvýše jeden. Přitom klidně každá položka v unionu může být struktura.
Abych to nějak zjednodušil, dám příklad. Mám program (jmenuje se IRPMon, ale to je detail), který monitoruje komunikaci mezi aplikacemi a ovladači. Každý požadavek odeslaný na ovladač reprezentuje strukturou REQUEST_GENERAL. Požadavků ale může být více druhů s různou strukturou dat (běžný požadavek, rychlá komunikace, další speciální typy požadavků), přitom ale každý požadavek může být pouze jednoho typu. Takže REQUEST_GENERAL vypadá cca takto:
typedef struct {
int RequestType;
union {
REQUEST_NORMAL NormalniPozadavek;
REQUEST_FAST RychlaKomunikace;
...
} Data;
} REQUEST_GENERAL;
Když uvidím požadavek v podobě mé struktury, podívám se do položky RequestType, která mi řekne, co je uloženo v unionu Data. Samozřejmě mi to nebrání hodnotu v RequestType ignorovat; je to spíš takový hezký přístup k datům.
A výhoda navíc je, že union šetří místo. Nikdo by mi nebránil tam union nemít a nahradit jej posloupností struktur. Ale proč to dělat, když vím, že požadavek může být jen jednoho typu (tzn. jen jedna z těch struktur by obsahovala validní data).
Jednoduše - v unii se položky překrývají -> můžeš použít jen jednu z nich.
Zobrazeno 4 zpráv z 4.