05 February 2023

C++ 核心指南目录

“Specify the underlying type of an enumeration only when necessary”

理由

默认的方式更容易阅读和编写。 int 是默认的整型值,int 与 C 枚举兼容。

例子

enum class Direction : char
{
    n, s, e, w,
    ne, nw, se, sw
};  // underlying type saves space

enum class Web_color : int32_t
{
    red   = 0xFF0000,
    green = 0x00FF00,
    blue  = 0x0000FF
};  // underlying type is redundant

注意

在提前声明枚举类型的时候,你必须指明内部用什么数据类型:

enum Flags : char;

void f(Flags);

// ....

enum Flags : char { /* ... */ };