Typ wyliczeniowy enum w C++

Typ wyliczeniowy enum w C++ daje programiście bardzo dużo ciekawych możliwości, a co najważniejsze rozwiązuje wiele problemów na jakie można natrafić podczas tworzenia oprogramowania. Takim podstawowym zastosowaniem typu wyliczeniowego enum jest na przykład możliwość bardzo sprawnego wysyłania argumentów do danej funkcji, które na dodatek są sprawdzane przez kompilator (nie ma możliwości wysłania innego typu argumentu niż ten, który został zdefiniowany przez programistę). Zobaczmy na przykładzie jak definiuje się typ enum:

Powyżej zdefiniowaliśmy nowy typ wyliczeniowy o nazwie co_robic. Oczywiście skoro co_robic jest typem to możemy tak jak w przypadku innych typów takich jak: int, char czy string zdefiniować odpowiednią zmienną:

I tutaj pojawia się pytanie: co do tak zdefiniowanej zmiennej można zapisać? Oczywiście możemy tutaj przypisać tylko i wyłącznie jedną z pozycji zdefiniowaną na liście wyliczeniowej:

Zabronione są między innymi takie operacje:

Popatrzmy teraz na trochę inny przykład użycia typu wyliczeniowego enum:

Jak widać do niektórych pozycji na liście wyliczeniowej nie przypisaliśmy liczb. Co zatem będą one zawierać?

  1. wypisz będzie miało przypisane 0. Dlaczego? Ponieważ, jeżeli nie została podana żadna inna liczba to wyliczanie zaczynamy od 0,
  2. zapisz będzie zawierać 1, bo po 0 bierzemy następną cyfrę czyli 1,
  3. skasuj jak widać zawiera 8,
  4. cosTam będzie miało przypisane 9, bo po 8 kompilator weźmie następną liczbę,
  5. natomiast nadpisz ma zapisaną liczbę 0 + 1 czyli 1.

Należy pamiętać, że typ wyliczeniowy enum jest typem arytmetycznym, a więc możliwe są między innymi takie operacje:

Oczywiście typ wyliczeniowy nie musi zawierać jakiejś nazwy:

Należy jednak pamiętać, że w tym przypadku nie będziemy mogli definiować nowych obiektów ponieważ nie znamy nazwy typu jakim chcemy się posłużyć.

Przykładowy program korzystający z typu wyliczeniowego bez nazwy:

Na początku tego artykułu wspomniałem iż typ wyliczeniowy można zastosować na przykład do przesyłania pewnych danych do funkcji. Poniżej więc przedstawiam przykładowy program, który wykorzystuję tę własność typu wyliczeniowego:

Fot: Samsung, Program „Mistrzowie kodowania”.

, , ,