C++ 열거체
목차
열거체는 사용자가 정의한 기호 상수를 만드는 방법입니다. 이들의 본질은 정수입니다. 열거체의 요소는 0부터 1, 2, 3, 4 이렇게 증가하는 값을 가지고 있습니다.
코드를 보면 변수를 지정하는 것 같습니다만 사실은 상수를 만드는 것 입니다.
굳이 열거체를 사용하지 않더라도 변수와 상수를 사용해서 같은 코드를 작성할 수 있지만 이렇게 모으는 이유는 의미를 부여하기 위해서 입니다.
아래 예제 코드에서는 myEnum에 과일 이름의 상수들을 만들었습니다. 이들은 실제로는 정수인 상수들입니다. myEnum 이라는 하나의 데이터 형이 생겨나는 것과 같습니다. 이 안의 요소에 없는 값을 사용하려 하면 컴파일 에러가 납니다.
#include <iostream> using std::cout; using std::endl; enum myEnum { apple, orange, kiwi, pineapple, mango, strawberry }; int main() { myEnum myFavorite = orange; myEnum secondFavorite(kiwi); myEnum justFavorite(mango); cout << orange << endl; cout << myFavorite << endl; cout << secondFavorite << endl; cout << justFavorite << endl; return 0; }
1 1 2 4
명시적으로 값을 지정
열거체에의 요소를 열거자라고 합니다. 열거자에는 자동으로 0부터 정수가 할당되지만 개별적으로 값을 지정할 수가 있습니다. 열거체를 정의할 때 개별값에 대입을 하면 값이 지정됩니다.
#include <iostream> using std::cout; using std::endl; enum myEnum { BLACK = 0, WHITE = 1, RED = 2, GREEN = 3, BLUE = 4 }; int main() { cout << "- BLACK : " << BLACK << endl; cout << "- WHITE : " << WHITE << endl; cout << "- RED : " << RED << endl; cout << "- GREEN : " << GREEN << endl; cout << "- BLUE : " << BLUE << endl; myEnum myVar1 = RED; myEnum myVar2 = GREEN; myEnum myVar3 = BLUE; cout << myVar1 << endl; cout << myVar2 << endl; cout << myVar3 << endl; return 0; }
- BLACK : 0 - WHITE : 1 - RED : 2 - GREEN : 3 - BLUE : 4 2 3 4
또한 위 코드에서 보는 것 처럼 열거자 BLACK , WHITE 등은 이미 상수로 사용이 가능합니다. 다른 상수들과 이름에 충돌이 일어나지 않도록 주의합니다.
요약
간단하게 C++ 열거체에 대하여 알아봤습니다.
C++에서 상수를 정의하는 방법은 이외에도 #define 이나 const 가 있습니다. 코드 자체는 어떻게 짜더라도 기능만 맞으면 잘 돌아가겠지만 어떤 때 사용해야할지 판단은 스스로 해야합니다.
그러기 위해서는 C++의 특성에 대해서 최대한 많이 알아두면 좋을 것 입니다.
언제나 처럼 추천하는 것은 영문 튜토리얼 문서들을 읽어나가며 자신의 코드를 쌓아두는 것 입니다. 기초학습을 할 때는 따라하지만 말고 꼭 자신의 코드로 다시 고쳐쓰고 그 코드를 잘 보관하는 것이 좋습니다. 허접하더라도 깃허브에 올려도 좋습니다. 대신 정리를 잘해서 올려야 필요할 때 찾기가 편합니다.
코드 조각들 하나하나가 모여서 나중에 위력을 발휘하는 날이 옵니다. 이 코딩은 하나 두개의 기술만 알아서는 큰 의미가 없지만 그 테크닉 수천개들이 체화가 되면 위력을 발휘하기 시작합니다.
끓임없이 좋은 문서를 많이 읽고 자신의 코드로 정리하는 습관을 들이는게 좋습니다.
참고문서
C++ Enumeration (programiz.com)
How to use enums in C++? (tutorialspoint.com)
Enumeration in C++ (beginnersbook.com)
8.2 — Enumerated types | Learn C++ (learncpp.com)