승쨩개발공부

[C++] 열거체(enum) 본문

C++

[C++] 열거체(enum)

SeungHyune 2021. 11. 30. 21:31

열거체

사용자 정의 자료형이다.

상태 값 지정 시 주로 사용된다.

TextRPG 에서 Combat함수로 반환하는 상태에 따라 분기를 수행한다.

-> 승리, 패배, 도망

하지만 반환 값 들이 늘어난다면?

ex) IDLE, WALK, ATTACK, RUN, JUMP, FALL, DEAD ... 등

이러한 값들이 점점 늘어난다면 switch문 같은것을 수행할떄 상수만으로 판단이 어렵다.

이 경우, 열거체를 사용해서 판독하자.

 

열거체의 정의

1.

enum 자료형이름

{

   열거자,

   열거자 ,

   열거자

}

 

2.

enum 자료형이름 { 열거자, 열거자, 열거자 }

 

 

열거자

상수의 성질을 가진다.

사용자가 임의로 수정할 수 있지만, 수정하지 않을 경우

좌측부터 0으로 시작하여 1씩 증가한 값을 가지게 된다.

 

 

열거체 선언

enum STATE { IDLE, WALK, ATTACK, RUN, JUMP, DEAD, END };

STATE   eState;

 

열거체 초기화

열거체의 초기화는 열거자로 초기화를 진행해야만 한다.

 

STATE      eState = 0;   // 불가능

STATE      eState = IDLE;

 

 

열거체의 활용

열거체는 switch문으로 분기할 경우 가독성이 좋아진다

 

int   iSelect = 0;

cin  >> iSelect;

 

STATE eState = IDLE;

 

switch (eState)
{
case IDLE:
cout << "대기 상태" << endl;
break;
case WALK:
cout << "걷기 상태" << endl;
break;
case ATTACK:
cout << "공격 상태" << endl;
break;
case RUN:
cout << "달리기 상태" << endl;
break;
case JUMP:
cout << "점프 상태" << endl;
break;
}

 

 

열거체의 크기

cout << sizeof(STATE) << endl;    // 4Bytes

열거체는 4Bytes 크기를 가진다.

 

열거체에는 하나의 상태 값만 저장이 된다.

상태 값은 정수의 성질을 가진다.

결국엔 정수 하나만 저장할 공간이 있으면 된다.

STATE   eState = ATTACK;

eState = IDLE;

eState = WALK;

 

 

 

 

'C++' 카테고리의 다른 글

[C++] 함수 포인터  (0) 2021.11.30
[C++] 공용체 (union)  (0) 2021.11.30
[C++] 입출력,스트림,버퍼,경로  (0) 2021.11.30
[C++] 메모리 구조  (0) 2021.11.30
[C++] 동적할당  (0) 2021.11.29