Union
Unia jest kolejnym obok struktury i klasy typem definiowanym przez użytkownika. Od pozostałych dwóch różni ją jednak to ze swoje składniki zapisuje w tym samym (współdzielonym) obszarze pamięci.
Co to oznacza w praktyce ?
Tylko tyle ze w danej chwili, unia może przechowywać wartość JEDNEJ z swoich zmiennych składowych.
Unie definiujemy w następujący sposób:
Rozmiar uni jest równy, rozmiarowi jej największego elementu.
Do elementów zawartych w uni dostajemy się za pomocą operatora wyłuskania (czyli "."), lub za pomocą wskaźników (i operatora this "->")
Jak już wcześniej wspomniałem w uni można przechowywać naraz wartość tylko jednej zmiennej co zobrazuje ten przykład:
Unie mogą zawierać również funkcje :
Dostęp do zmiennych w uni, możemy określać za pomocą operatorów private i public.
Ponieważ Uni nie można dziedziczyć Operator protected jest niedopuszczalny !
Co to oznacza w praktyce ?
Tylko tyle ze w danej chwili, unia może przechowywać wartość JEDNEJ z swoich zmiennych składowych.
Unie definiujemy w następujący sposób:
Rozmiar uni jest równy, rozmiarowi jej największego elementu.
Do elementów zawartych w uni dostajemy się za pomocą operatora wyłuskania (czyli "."), lub za pomocą wskaźników (i operatora this "->")
PrzykladowaUnia obiekt_uni;
PrzykladowaUnia *wskaznik_na_unie;
wskaznik_na_unie = &obiekt_uni;
obiekt_uni.i_zmienna_skladowa = 5; // nadanie wartości 5 zmiennej
wskaznik_na_unie->i_zmienna_skladowa = 6 // nadanie tej samej zmiennej wartość 6
PrzykladowaUnia *wskaznik_na_unie;
wskaznik_na_unie = &obiekt_uni;
obiekt_uni.i_zmienna_skladowa = 5; // nadanie wartości 5 zmiennej
wskaznik_na_unie->i_zmienna_skladowa = 6 // nadanie tej samej zmiennej wartość 6
Jak już wcześniej wspomniałem w uni można przechowywać naraz wartość tylko jednej zmiennej co zobrazuje ten przykład:
PrzykladowaUnia obiekt_uni;
obiekt_uni.i_zmienna_skladowa = 5; // nadanie wartości 5 zmiennej
obiekt_uni.c_zmienna_skladowa = 'a'; // nadpisanie zawartości naszej uni znakiem "a";
cout << obiekt_uni.i_zmienna_skladowa; // taki zapis nie jest poprawny !! Unia przechowuje teraz znak "a" wiec nie możemy odnieść sie do obiektu typu int
cout << obiekt_uni.c_zmienna_skladowa; // teraz wszystko w porządku. Na ekran zostanie wypisana litera "a"
obiekt_uni.i_zmienna_skladowa = 5; // nadanie wartości 5 zmiennej
obiekt_uni.c_zmienna_skladowa = 'a'; // nadpisanie zawartości naszej uni znakiem "a";
cout << obiekt_uni.i_zmienna_skladowa; // taki zapis nie jest poprawny !! Unia przechowuje teraz znak "a" wiec nie możemy odnieść sie do obiektu typu int
cout << obiekt_uni.c_zmienna_skladowa; // teraz wszystko w porządku. Na ekran zostanie wypisana litera "a"
Unie mogą zawierać również funkcje :
Dostęp do zmiennych w uni, możemy określać za pomocą operatorów private i public.
Ponieważ Uni nie można dziedziczyć Operator protected jest niedopuszczalny !


