728x90
열거형이란?
열거형은 C++가 제공하는 기본 자료형이 아니라 프로그래머들이 따로 만든 사용자 정의 자료형이다. 열거형은 enum 을 통해 정의된다.
enum Color
{
/* 여기부터는 열거자(enumerator)가 들어간다.
열거자는 세미콜론(;)이 아니라 쉼표(,)로 구분한다. */
COLOR_BLACK,
COLOR_WHITE,
COLOR_RED,
COLOR_BLUE,
COLOR_GREEN,
COLOR_YELLOW,
COLOR_SKYBLUE,
}; // 열거형 정의시에는 반드시 블록뒤에 세미콜론(;)을 붙여줘야한다.
//열거형 Color 사용
Color paint = COLOR_WHITE;
Color school(COLOR_GREEN);
Color banana { COLOR_YELLOW };
위의 활용에서 알 수 있다시피 열거형은 매크로에 가까운 기능을 가졌다고 볼 수 있다. 즉, 숫자로 나타내었을 때 프로그래머가 혼돈을 느끼거나 헷갈릴 만한 숫자 나열에서 그 숫자의 값에 해당하는 내용을 매크로와 같이 부여한 것이다.
enum Color
{
BLACK,
WHITE,
RED,
BLUE,
};
enum Feeling
{
HAPPY,
TIRED,
SAD,
BLUE,
};
위의 두 Color 와 Feeling 이라는 두 열거형에서 BLUE 라는 열거자가 겹치게 되는데, 다른 열거형 안에 정의되었으므로 서로 영향을 미치지 않을 것이라고 생각하기 쉽지만, 컴파일 시에 redefition이라는 설명과 함께 컴파일 오류가 발생한다. 이러한 오류를 범하지 않기 위해서 아래 코드블록과 같이 열거자 앞에 열거형을 대문자로 붙여주는 것이 일반적이다.
enum Color
{
COLOR_BLACK,
COLOR_WHITE,
COLOR_RED,
COLOR_BLUE,
};
enum Feeling
{
FEELING_HAPPY,
FEELING_TIRED,
FEELING_SAD,
FEELING_BLUE,
};
열거형의 값(Enumerator Values)
enum Color
{
COLOR_BLACK, // 0 할당
COLOR_WHITE, // 1 할당
COLOR_RED, // 2 할당
COLOR_BLUE, // 3 할당
COLOR_GREEN, // 4 할당
COLOR_YELLOW, // 5 할당
COLOR_SKYBLUE, // 6 할당
};
위와 같이 그냥 열거형 정의시에는 첫 열거자의 값이 0이 되고 1씩 커지며 할당이 된다.
enum Color
{
COLOR_BLACK=-4, // -4 할당
COLOR_WHITE, // -3 할당
COLOR_RED, // -2 할당
COLOR_BLUE, // -1 할당
COLOR_GREEN, // 0 할당
COLOR_YELLOW, // 1 할당
COLOR_SKYBLUE, // 2 할당
};
하지만 첫 열거자의 값에 다른 정수값을 주었을 때, 그 숫자로부터 1씩 커지며 할당을 하게 된다.
뿐만 아니라, 아래 코드블럭과 같이 열거자들의 값이 같도록 값을 줄 수도 있다.
enum Color
{
COLOR_BLACK, // 0 할당
COLOR_WHITE, // 1 할당
COLOR_RED, // 2 할당
COLOR_BLUE, // 3 할당
COLOR_GREEN, // 4 할당
COLOR_YELLOW, // 5 할당
COLOR_SKYBLUE=5,
};
<COLOR_YELLOW와 COLOR_SKYBLUE가 5로 같음>
// 피드백 언제든지 감사히 받겠습니다.
728x90
'Computer Science > C || C++' 카테고리의 다른 글
(C++) 참조 변수 (1) | 2021.03.02 |
---|---|
전역변수 앞에서의 extern 과 static (0) | 2021.02.07 |
헤더가드의 필요성 (0) | 2021.01.27 |
첫 발걸음 (0) | 2021.01.25 |