level 11
含义
枚举(Enumeration)是一种用户定义的数据类型,用于表示一组命名的整型常量。这些常量通常具有相关的语义,是一种让代码更加易读和易维护的方式。枚举类型可以帮助程序员在代码中使用具名常量,而不是“魔法数字”(magic numbers),从而提高代码的可读性和可维护性。
在 C++ 中,枚举类型有两种形式:传统枚举(C++98/03)和强类型枚举(C++11 及以后)。
2024年06月08日 05点06分
1
level 11
传统枚举(C++98/03)
enum Color {
RED, // 默认为 0
GREEN, // 默认为 1
BLUE // 默认为 2
};
2024年06月08日 05点06分
2
枚举常量:枚举成员,如 RED、GREEN 和 BLUE,默认从 0 开始递增,可以显式地指定它们的值。
2024年06月08日 05点06分
类型范围:枚举常量是整型值,且隐式转换为整数时是有效的。也就是说,你可以将 Color 枚举类型的值赋给一个整型变量。
2024年06月08日 05点06分
level 11
强类型枚举(C++11 及以后)
enum class Color {
RED, // 默认为 0
GREEN, // 默认为 1
BLUE // 默认为 2
};
2024年06月08日 05点06分
3
作用域限制:强类型枚举的枚举常量(如 Color::RED)位于枚举的命名空间内,避免了全局命名空间的污染。
2024年06月08日 05点06分
类型安全:强类型枚举不允许隐式转换为整数类型,必须显式转换,增强了类型安全性。
2024年06月08日 05点06分
level 11
枚举的用途
状态表示:枚举常常用于表示对象的状态。例如,网络连接的状态、文件操作的状态、任务的状态等。
enum class ConnectionState {
DISCONNECTED,
CONNECTING,
CONNECTED,
DISCONNECTING
};
2024年06月08日 05点06分
4
level 11
选项和配置:可以使用枚举来表示一组配置选项或模式。例如,图形渲染模式、日志记录级别等。
enum LogLevel {
INFO,
WARNING,
ERROR
};
2024年06月08日 05点06分
5
level 11
标志和标记:枚举可以用来表示一组位标志,尽管在 C++ 中这通常结合 enum class 和位运算符来使用。
enum FilePermissions {
READ = 1,
WRITE = 2,
EXECUTE = 4
};
2024年06月08日 05点06分
6
level 11
接口参数和返回值:枚举可以用于函数的参数和返回值,增加代码的可读性和可维护性。
enum class ErrorCode {
SUCCESS,
NOT_FOUND,
PERMISSION_DENIED
};
ErrorCode performOperation() {
// Some operation
return ErrorCode::SUCCESS;
}
2024年06月08日 05点06分
7
level 11
简化代码:枚举可以用来简化条件判断,使代码更加清晰。
enum class Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
};
Day today = Day::FRIDAY;
if (today == Day::FRIDAY) {
std::cout << "It's Friday!" << std::endl;
}
2024年06月08日 05点06分
8
level 11
使用枚举的最佳实践
使用强类型枚举:在 C++11 及之后的版本中,优先使用 enum class 而不是传统的 enum,以避免命名冲突和隐式转换问题。
命名约定:为枚举类型和枚举常量使用合适的命名约定,使其含义明确。
显式值赋值:在需要明确控制枚举常量值的情况下,可以显式地为它们赋值。
=================
enum class ErrorCode {
SUCCESS = 0,
NOT_FOUND = 404,
PERMISSION_DENIED = 403
};
=================
避免使用魔法数字:使用枚举代替“魔法数字”,提高代码的可读性和可维护性。
考虑位掩码(Bitmask):在需要多个标志组合使用的情况下,可以使用 enum class 和位运算符来表示位掩码。
2024年06月08日 05点06分
9
level 11
枚举常量”(enumeration constant)和“枚举成员”(enumeration member)基本上是同义词。它们都指的是在枚举类型中定义的命名常量。
2024年06月08日 05点06分
10
level 11
枚举常量(Enumeration Constant)或 枚举成员(Enumeration Member)定义与含义
枚举类型 是一种用户定义的类型,用于表示一组相关的命名常量。
枚举常量/枚举成员 是在枚举类型中定义的每个具体的命名常量,它们代表了一组离散的整数值。
2024年06月08日 05点06分
11
level 11
考虑一个简单的枚举类型示例:
enum Color {
RED, // 0
GREEN, // 1
BLUE // 2
};
2024年06月08日 05点06分
13
Color 是一个枚举类型。
2024年06月08日 05点06分
RED、GREEN 和 BLUE 是 Color 枚举类型的枚举常量(或枚举成员)
2024年06月08日 05点06分
level 11
枚举的基本用法 传统枚举(C++98/03)
enum Color {
RED = 1,
GREEN,
BLUE
};
2024年06月08日 05点06分
14
在上面的例子中,枚举类型 Color 定义了三个枚举常量 RED、GREEN 和 BLUE,它们默认的值分别是 1, 2 和 3(从 1 开始递增)。
2024年06月08日 05点06分
level 11
使用枚举常量时,可以直接使用它们的名称:
Color myColor = RED; // 将 myColor 变量赋值为枚举常量 RED
if (myColor == GREEN) {
// 执行一些操作
}
2024年06月08日 05点06分
15
level 11
强类型枚举(C++11 及以后)
enum class Color {
RED,
GREEN,
BLUE
};
2024年06月08日 05点06分
16