14-2 使用强枚举类型

使用强枚举类型

强枚举类型具备以下三个特性:

  • 枚举标识符属于强枚举类型的作用域

  • 枚举标识符不会隐式转换为整型

  • 能指定强枚举类型的底层类型,默认为int

1. 定义强枚举类型

#include <iostream>
enum class HighSchool
{
student,
teacher,
headmaster
};

enum class University
{
student,
professor,
princlpal
};

int main()
{
HighSchool x = HighSchool::student;
University y = University::student;
bool b = x < HighSchool::headmaster;
std::cout << std::boolalpha << b << std::endl;
}

2. 定义类型时指定底层类型

enum class E : unsigned int{
e1 = 1,
e2 = 2,
e3 = 0xfffffff0;
}

int main()
{
bool b = e1 < e3;
std::cout<<std::boolalpha<<b<<std::endl;
}