W tej lekcji omówimy, czym jest typ wyliczeniowy enum
w C++. Typy wyliczeniowe umożliwiają definiowanie zestawu nazwanych wartości całkowitych, które reprezentują konkretne stany lub opcje w programie. Dzięki temu kod jest czytelniejszy i łatwiejszy do zrozumienia, zwłaszcza gdy pracujemy z wieloma możliwymi wartościami.
enum
pozwala na stworzenie nowego typu danych, który jest ograniczony do określonego zestawu wartości. Na przykład, jeśli mamy dni tygodnia, możemy stworzyć typ enum
o nazwie Day
, który zawiera wartości takie jak Monday
, Tuesday
, Wednesday
, itd. Wartości w enum
są domyślnie reprezentowane jako liczby całkowite, zaczynając od 0, ale można również przypisać im konkretne liczby.
Poniżej przedstawimy prosty przykład, który pokazuje, jak używać enum
w praktyce.
Przykład kodu
Stwórz nowy plik o nazwie enum_example.cpp
i wklej do niego poniższy kod:
// Importujemy bibliotekę iostream, aby umożliwić operacje wejścia/wyjścia
#include <iostream>
// Definiujemy typ wyliczeniowy 'Day', który zawiera dni tygodnia
enum Day {
Monday, // Domyślna wartość 0
Tuesday, // Domyślna wartość 1
Wednesday, // Domyślna wartość 2
Thursday, // Domyślna wartość 3
Friday, // Domyślna wartość 4
Saturday, // Domyślna wartość 5
Sunday // Domyślna wartość 6
};
int main() {
// Deklarujemy zmienną typu 'Day' i przypisujemy jej wartość 'Friday'
Day today = Friday;
// Sprawdzamy, jaki jest dzisiaj dzień, korzystając z instrukcji switch
switch (today) {
case Monday:
std::cout << "Dzisiaj jest poniedziałek." << std::endl;
break;
case Tuesday:
std::cout << "Dzisiaj jest wtorek." << std::endl;
break;
case Wednesday:
std::cout << "Dzisiaj jest środa." << std::endl;
break;
case Thursday:
std::cout << "Dzisiaj jest czwartek." << std::endl;
break;
case Friday:
std::cout << "Dzisiaj jest piątek." << std::endl;
break;
case Saturday:
std::cout << "Dzisiaj jest sobota." << std::endl;
break;
case Sunday:
std::cout << "Dzisiaj jest niedziela." << std::endl;
break;
default:
std::cout << "Nieznany dzień." << std::endl;
}
// Możemy również przypisać wartości enum do zmiennych całkowitych
int dayNumber = today; // Przypisujemy wartość liczbową 'Friday' do zmiennej
std::cout << "Numer dzisiejszego dnia w tygodniu: " << dayNumber << std::endl;
return 0;
}
Wyjaśnienie
W powyższym programie pokazaliśmy, jak używać typu wyliczeniowego enum
do reprezentowania dni tygodnia. Wartości w enum
są traktowane jako liczby całkowite, co ułatwia ich porównywanie i przypisywanie do zmiennych.
- Na początku definiujemy typ wyliczeniowy
Day
, który zawiera wszystkie dni tygodnia, odMonday
doSunday
. Wartości te są domyślnie przypisywane do liczb całkowitych, zaczynając od 0 dlaMonday
, 1 dlaTuesday
, itd. - W funkcji
main
deklarujemy zmiennątoday
typuDay
i przypisujemy jej wartośćFriday
. - Następnie używamy instrukcji
switch
, aby wyświetlić odpowiedni komunikat w zależności od wartości zmiennejtoday
. - Na końcu przypisujemy wartość liczbową
Friday
(która wynosi 4) do zmiennejdayNumber
i wyświetlamy ją na ekranie.
Podsumowanie
Typy wyliczeniowe enum
w C++ umożliwiają tworzenie czytelniejszych programów, w których konkretne wartości są reprezentowane przez nazwy zamiast liczb. W tym przykładzie wykorzystaliśmy enum
do reprezentowania dni tygodnia i użyliśmy go w instrukcji switch
, aby sprawdzić, jaki jest dzień. Typy wyliczeniowe są bardzo przydatne, gdy mamy do czynienia ze zbiorami możliwych wartości, np. dniami tygodnia, miesiącami, stanami czy kolorami.