#include <iostream>
using namespace std;
enum Status
{
normal = 0,
abnormal,
disconnect = 100,
close
};
enum class MachineStatus : char //자료형을 명시하지 않은면 자동으로 int형이 된다.
{
normal = 'n', //n은 아스키코드로 110임
abnormal, //따라서 111이 할당됨
disconnect = 100,
close //101
};
//enum class는 enum의 한계를 극복하기위해 만들어졌다. enum요소에 속하는 상수들은
//일반 상수들 처럼 이름이 겹치면 안되지만, enumclass가 등장함으로써 같은 이름의 enum 요소를
//사용할 수 있게 되었습니다.
int main()
{
MachineStatus machine = MachineStatus::abnormal; //enum클래스의 abnormal값이 할당됨
if (machine == MachineStatus::normal)
cout << "Status : normal" << endl;
else if (machine == MachineStatus::abnormal)
cout << "Status : abnormal" << endl;
else if (machine == MachineStatus::disconnect)
cout << "Status : disconnect" << endl;
else
cout << "Status : close" << endl;
cout << "machine : " << static_cast<int>(machine) << ", " << static_cast<char>(machine) << endl;
// 변수machine의 값을 정수형, 문자형으로 각각캐스팅해서 출력
return 0;
}