枚举的简单认识

发布于:2025-02-11 ⋅ 阅读:(85) ⋅ 点赞:(0)

什么是枚举?

  枚举:具有有限个整数符号常量的集合,这些整型符号常量称为枚举常量,枚举的定义很简单,和结构体差不多,只需要把关键字 struct 改为 enum :

enum 枚举类型名 {
    枚举常量1,
    枚举常量2
    // 可以继续罗列更多枚举常量
};

  例如:

enum Weekday {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};

注意:在枚举定义里,枚举成员之间应该用逗号分隔,如果是最后一个成员,后面可以跟一个分号结束整个枚举类型的定义。

枚举的类型有什么用?

  枚举类型使用具有实际意义的名字来代表一组常量,例如,在一个图形绘制程序中,可能会有不同的形状选顶,如圆形 (CIRCLE) 、矩形( REC TANGL E )、三尾角形(TRIANGLE) 等。通过定义枚举类型:

enum Shape {
    CIRCLE,
    RECTANGLE,
    TRIANGLE
};

  比起使用数字(如 0 代表圆形、1 代表矩形、2 代表三角形)来表示形状选项,枚举类型使得代码的语义更加清晰。当看到Shape类型的变量被赋值为CIRCLE时,很容易理解其代表的含义。

声明变量并定义枚举类型

  可以在定义枚举类型的同时声明该类型的变量,形式如下:

enum 枚举类型名 {
    枚举常量1,
    枚举常量2
} 变量名1, 变量名2;

  例如:

enum Color {
    RED,
    GREEN,
    BLUE
} myColor, yourColor;

  匿名枚举声明(较少单独这样用):

enum {
    OPTION1,
    OPTION2
};

  enum class(强类型枚举)声明:

enum class 枚举类型名 {
    枚举常量1,
    枚举常量2
};

  例如:

enum class Status {
    SUCCESS,
    FAILURE,
    PENDING
};

  enum class这种强类型枚举的好处是,其枚举常量的作用域限定在枚举类型内部,不会和其他同名的标识符冲突,使用时需要显式指定枚举类型,如Status::SUCCESS,这提高了代码的类型安全性和可读性,能避免一些因为命名空间污染等导致的潜在问题,是 C++ 中推荐使用的枚举定义方式(相较于传统的非限定作用域的枚举)。

  enum struct声明(和enum class基本等效):
  在功能上enum struct和enum class几乎一样,只是语法上使用enum struct关键字,例如:

enum struct Size {
    SMALL,
    MEDIUM,
    LARGE
};

  同样,使用其枚举常量时要通过Size::SMALL等形式指定所属的枚举类型。
(完)


网站公告

今日签到

点亮在社区的每一天
去签到