C++中的enum
(枚举)类型是一种用户定义的类型,用于表示一组整数值,每个值都有对应的名称,增强了代码的可读性和可维护性。
1. 基本枚举类型
基本的枚举类型定义了一组命名的整数常量。
enum Color {RED,GREEN,BLUE
};Color myColor = RED;
在这个例子中,RED
、GREEN
和BLUE
被自动赋予了整数值(默认从0开始)。
2. 显式指定枚举值
可以在定义枚举类型时为每个枚举值显式指定整数值。
enum StatusCode {OK = 200,NotFound = 404,Error = 500
};StatusCode myStatus = NotFound;
这里,OK
、NotFound
、Error
分别被赋予了200、404、500作为它们的值。
3. 枚举与整数类型的转换
枚举值可以隐式转换为整数,但整数到枚举类型的转换需要显式转换。
enum Color {RED,GREEN,BLUE
};Color color = RED;
int colorValue = color; // 隐式转换为整数Color anotherColor = static_cast<Color>(1); // 显式从整数转换为枚举类型
4. enum class
(强类型枚举)
C++11引入了enum class
(或称作强类型枚举),提供了更好的类型安全性。
enum class Color {RED,GREEN,BLUE
};Color color = Color::RED; // 必须使用作用域解析运算符// 不允许隐式转换为整数,下面的代码会引发编译错误
// int colorValue = color;// 显式转换是允许的
int colorValue = static_cast<int>(Color::GREEN);
5. 枚举的应用
枚举通常用于表示一组相关的常量值,使得代码更加清晰易读。
enum class Day {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
};void printDay(Day day) {if (day == Day::SATURDAY || day == Day::SUNDAY) {std::cout << "It's weekend!" << std::endl;} else {std::cout << "It's a weekday." << std::endl;}
}printDay(Day::SATURDAY);