在C++中,枚举(Enumerations),是一种数据类型,它可以让程序员为一组整数值赋予更有意义的名字。枚举提供了一种方式,使得代码更加清晰、易于理解,并且可以避免魔法数字(magic numbers)的滥用。
定义枚举的语法:
enum EnumName {
enumValue1 = expression1,
enumValue2,
enumValue3 = expression3,
...
};
EnumName
是枚举的名称。enumValue1
,enumValue2
,enumValue3
, 等是枚举值的名称。expression1
,expression3
, 等是整数值,用于初始化枚举值。
示例:
enum Color {
RED = 1,
GREEN,
BLUE
};
Color myColor = RED;
在这个例子中,我们定义了一个名为 Color
的枚举类型,它有三个可能的值:RED
、GREEN
和 BLUE
。RED
初始化为 1,GREEN
隐式地初始化为 2(因为 RED
是 1),BLUE
为 3。
C++11 新特性:枚举类(强类型枚举)
C++11 引入了枚举类(也称为“强类型枚举”),允许更严格的类型检查,并允许枚举值具有不同的底层类型:
enum class EnumName : underlying_type {
enumValue1 = expression1,
enumValue2,
...
};
EnumName
是枚举类的名称。underlying_type
是枚举值的底层类型,如int
,long
,unsigned long
等。enumValue1
是枚举值的名称。
示例:
enum class Color : int {
RED = 1,
GREEN,
BLUE
};
Color myColor = Color::RED; // 注意需要使用作用域解析运算符
在这个例子中,Color
是一个枚举类,其底层类型为 int
。枚举类提供了更好的类型安全,因为它们不允许隐式转换到整数类型。
注意:
- 默认情况下,枚举值的底层类型是
int
。 - 枚举值是常量,不能被修改。
- 枚举类型并不是一种新的类型,而是基于整数的类型。
- 枚举类成员需要使用作用域解析运算符
::
来访问。
枚举和枚举类提供了一种在C++中使用命名常量的方式,使得代码更加清晰和易于维护。