只介绍enum class
问题与需求
enum class的本质作用是 给具有标识意义的int变量加作用域,使bug在编译期能够被发现
具有标识意义,一般指状态码
比如下面的例子:
1 | // 不用enum |
这样写可能会导致2个问题:
- 0,1,-1这种数字的意义并不明确,可能过几天自己就忘了哪个数对应哪个状态。
- 假如代码写错了,把别的int变量错当成
status传到status_check函数里,编译时不会报错,运行时出问题
所以需要给status做一些设置,使状态码可读性增强,并且把status和普通int变量区分开
这就是enum class要做的事
具体语法
声明语法:
1 | enum class 枚举名 [: 底层类型] { 枚举值1 [= 初始值], 枚举值2, ... }; |
比如:
1 | enum class Status : int { OK = 0, Error = 1, Timeout = 2 }; |
1 |
|
使用场景:
1 | enum class Status : { OK, Error, Timeout }; |
使用enum之后,Status就像一个类,status_check接受的参数规定为必须是Status类。如果其他变量被错传进来,编译期就会报错。
注意使用枚举值的时候,必须带上枚举名::,就像命名空间一样
- 本文链接: https://www.xmofficial.top/2026/05/16/5-enum/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。