06 February 2023

C++ 核心指南目录

“Specify enumerator values only when necessary”

理由

简单方便。避免枚举项的值重复。默认的值是按顺序设定的,对于 switch 语句的实现来说比较友好。

例子

enum class Col1 { red, yellow, blue };
enum class Col2 { red = 1, yellow = 2, blue = 2 }; // typo
enum class Month { jan = 1, feb, mar, apr, may, jun,
                   jul, august, sep, oct, nov, dec };
                 // starting with 1 is conventional
enum class Base_flag { dec = 1, oct = dec << 1, hex = dec << 2 }; // set of bits

明确指定枚举项的值只有在这些情况下有用:

  • 需要约定俗成的值,比如月份
  • 连续的值不是想要的,如设定不同的比特位

强化

  • 标记重复的枚举项值
  • 标记多余的显式方式设定连续值的情况