enum
, czyli typ wyliczeniowy w C++, to sposób na zdefiniowanie zestawu nazwanych stałych jako typu wyliczeniowego. Używa się go do reprezentowania grupy stałych całkowitych w bardziej czytelnej formie.
enum
poprawia czytelność kodu, umożliwiając korzystanie z nazw symbolicznych zamiast surowych wartości liczbowych.
Sposoby i Metody
Deklaracja i Definicja
enum
deklaruje się poprzez słowo kluczowe
enum
, po którym następuje opcjonalna nazwa typu i lista nazwanych stałych:
enum NazwaTypu { Stała1, Stała2, ... };
Wartości w
enum
są domyślnie typu
int
i zaczynają się od 0, chyba że zostaną jawnie zainicjalizowane.
Przykłady
Przykład 1: Proste enum
enum Kolor { Czerwony, Zielony, Niebieski };
void pokazKolor(Kolor k);
int main() {
pokazKolor(Zielony);
return 0;
}
void pokazKolor(Kolor k) {
if (k == Czerwony) std::cout << "Czerwony";
else if (k == Zielony) std::cout << "Zielony";
else std::cout << "Niebieski";
std::cout << std::endl;
}
Przykład 2: enum
z określonymi wartościami
enum DzienTygodnia { Poniedzialek = 1, Wtorek, Sroda, Czwartek, Piatek, Sobota, Niedziela };
void pokazDzienTygodnia(DzienTygodnia dzien);
Przykład 3: enum class
enum class
(lub „scoped enum”) to ulepszona wersja
enum
, która zapewnia lepsze zabezpieczenie przestrzeni nazw i silniejsze typowanie.
enum class Status { Sukces, Blad };
void sprawdzStatus(Status s);
Przykład 4: enum
w switch-case
enum
jest często używany w instrukcjach switch, aby wykonać różne działania w zależności od wartości
enum
.
enum Stan { Wlaczony, Wylaczony };
void operacja(Stan s) {
switch (s) {
case Wlaczony:
// akcja dla Wlaczony
break;
case Wylaczony:
// akcja dla Wylaczony
break;
}
}
Przykład 5: Konwersja enum
na int
Czasami potrzebujemy uzyskać wartość liczbową stałej
enum
, co można osiągnąć przez jawne rzutowanie.
enum Poziom { Niski = 1, Sredni, Wysoki };
void pokazPoziom(Poziom p) {
std::cout << "Poziom wartość: " << static_cast<int>(p) << std::endl;
}
Podsumowanie
enum
i
enum class
to przydatne narzędzia w C++, które pozwalają na definiowanie i używanie zestawu nazwanych stałych w bardziej czytelny i bezpieczny sposób. Poprawiają one czytelność kodu, ułatwiają zarządzanie grupami stałych wartości i wspomagają pisanie bardziej modularnego i łatwiejszego do zrozumienia kodu.