enum枚举介绍:
C++中,enum
(枚举)是一种用户自定义的数据类型,它允许程序员定义一系列命名的整型常量。枚举类型的主要目的是增加程序的可读性,尤其是在描述状态量或者一组相关的常量时非常有用。
枚举类型的定义格式如下:
enum <类型名> { <枚举常量表> };
其中,<类型名>
是自定义的枚举类型名称,<枚举常量表>
是由枚举常量构成的列表,枚举常量是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表中的各个枚举常量之间以逗号分隔,且必须各不相同。枚举常量的值类型与条件表达式相同,默认状态下,这个整数就是所列举元素的序号,序号从0开始。
比如下面这个例子:
enum Color { RED, BLUE, WHITE, BLACK };
Color
是枚举类型的名称,RED
、BLUE
、WHITE
和BLACK
是枚举常量,它们分别代表红色、蓝色、白色和黑色
枚举常量的值:
枚举常量代表该枚举类型的变量可能取的值,编译器为每个枚举常量指定一个整数值。默认情况下,这个整数就是所列举元素的序号,序号从0开始。可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按默认方式取值,而指定值之后的枚举常量按依次加1的原则取值。
enum Fruit { APPLE, ORANGE, BANANA = 1, PEACH, GRAPE };
在这个例子中,APPLE
的值为0,ORANGE
的值为1,BANANA
的值为1(因为它被显式指定),PEACH
的值为2,GRAPE
的值为3。
枚举变量的使用
定义枚举类型后,可以定义该枚举类型的变量。枚举变量的值只能取枚举常量表中所列的值,即整型数的一个子集。枚举变量占用内存的大小与整型数相同。枚举变量只能参与赋值和关系运算以及输出操作,参与运算时用其本身的整数值。
Color favoriteColor = RED;
在这个例子中,favoriteColor
是一个Color
类型的变量,它被赋值为RED
。
强类型枚举(C++11及以后版本)
C++11引入了强类型枚举(enum class
),它提供了更好的类型安全性和作用域控制。强类型枚举的成员(枚举值)具有枚举类型的作用域,这意味着你不能在枚举类型的作用域之外直接使用枚举值,除非使用枚举类型名和作用域解析运算符 ::
来指定它们。
例如,定义一个强类型枚举:
enum class Color : unsigned int { RED, GREEN, BLUE };
在这个例子中,Color
是枚举类型的名称,RED
、GREEN
和BLUE
是枚举值,它们的底层类型被指定为 unsigned int
。要访问这些枚举值,需要使用 Color::
前缀:
比如:
Color myColor = Color::RED;
强类型枚举不会隐式地转换为其他类型(如 int
),这有助于防止意外的类型转换和类型错误。如果需要将强类型枚举值转换为其他类型,必须显式地使用类型转换运算符(如 static_cast
)。