C++ 中存在 enum
和 enum class
两种,现代 C++ 更加建议使用 enum class
这种。理由主要有三点:
enum class
作用域更小,可以减少命名空间污染。enum
定义后,其中的枚举类作用域是整个 enum
所在空间,可能对其他部分产生影响。比如
1 2 3 4
| enum Color { black, white, red }; auto white = false;
|
enum
会发隐式转换,但是 enum class
不会发生
1 2 3 4 5 6 7 8 9 10 11 12 13
| enum Color { black, white, red };
std::vector<std::size_t> primeFactors(std::size_t x);
Color c = red; …
if (c < 14.5) { auto factors = primeFactors(c); … }
|
1 2 3 4 5 6 7 8 9 10 11
| enum class Color { black, white, red };
Color c = Color::red; ...
if (c < 14.5) { auto factors = primeFactors(c); … }
|
enum class
可以被前置声明。前置声明某些情况下可以减少编译依赖。
1 2
| enum Color; enum class Color;
|
enum class
使用
- 第一项进行赋值。建议对枚举第一项赋值 0,这样可以帮助明确各个枚举项值。
1 2 3 4 5 6
| enum class Color { black=0, white, red };
|
- 整加 count。这个是方便类似
vector<int> a(1,Color::count)
情况
1 2 3 4 5 6 7
| enum class Color { black=0, white, red, count };
|
未找到相关的 Issues 进行评论
请联系 @bugcat9 初始化创建