枚举
在C++中,枚举(Enumeration)是一种用户定义的数据类型,它由一组命名的整数常量组成。枚举在C++中有几种不同的形式。
传统枚举(Unscoped Enum)#
传统枚举(也称为未作用域枚举)定义如下:
Copy
| enum Color { |
| RED, |
| GREEN, |
| BLUE |
| }; |
上述例子中,Color
是枚举的类型名,RED
、GREEN
和BLUE
是枚举的成员。默认情况下,枚举成员的值从0开始,并依次递增。
- 枚举成员的作用域是全局的。
- 枚举成员可以隐式地转换为整型。
- 枚举成员可以不显式指定值,如果不指定,则从0开始依次递增。
作用域枚举(Scoped Enum)#
C++ 11 引入了作用域枚举,定义如下:
Copy
| enum class Color { |
| RED, |
| GREEN, |
| BLUE |
| }; |
| |
| enum struct Color { |
| RED, |
| GREEN, |
| BLUE |
| }; |
- 枚举成员的作用域是枚举类型内部,必须通过枚举类型来访问。
- 枚举成员不能隐式转换为整型,必须显式转换。
- 提供了更好的类型安全。
使用枚举#
Copy
| enum Color { |
| RED, |
| GREEN, |
| BLUE |
| }; |
| |
| Color c = RED; |
| if (c == RED) { |
| |
| } |
Copy
| enum class Color { |
| RED, |
| GREEN, |
| BLUE |
| }; |
| |
| Color c = Color::RED; |
| if (c == Color::RED) { |
| // do something |
| } |
显式指定枚举值#
Copy
| enum class Color { |
| RED = 1, |
| GREEN = 2, |
| BLUE = 4 |
| }; |
也可以部分显式指定(未指定的部分会在前一个基础上加一)
Copy
| enum class Color { |
| RED = 2, |
| GREEN = 4, |
| BLUE |
| }; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)