C++——自定义数据类型(枚举)

114 阅读2分钟
  1. 枚举 (enum):为整数赋予有意义的名称 (约 25 分钟)

    • 什么是枚举?

      • 在编程中,我们经常需要表示一组固定的、相关的常量值
      • 例如,一周的七天、交通信号灯的三种状态、游戏角色的不同职业等。
    • 枚举是一种用户定义的数据类型,它允许你为一组整型常量赋予有意义的名称。 这样可以提高代码的可读性和可维护性,避免使用难以理解的 magic number (魔法数字)。

    • 定义枚举类型

      enum Weekday {
          Monday,    // 默认值为 0
          Tuesday,   // 默认值为 1
          Wednesday, // 默认值为 2
          Thursday,  // 默认值为 3
          Friday,    // 默认值为 4
          Saturday,  // 默认值为 5
          Sunday     // 默认值为 6
      };
      
      • enum 关键字表明我们正在定义一个枚举类型。
      • Weekday 是这个枚举类型的名称。
      • 花括号 {} 内部列出了枚举常量,用逗号分隔。默认情况下,第一个枚举常量的值为 0,后续常量的值依次递增 1。
    • 使用枚举类型

      #include <iostream>
      
      enum Weekday {
          Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
      };
      
      int main() {
          Weekday today = Wednesday;
      
          // 可以直接使用枚举常量
          if (today == Wednesday) {
              std::cout << "今天星期三,要努力学习!" << std::endl;
          }
      
          // 枚举常量本质上是整型,可以进行比较和运算
          if (today > Friday) {
              std::cout << "今天是周末!" << std::endl;
          }
      
          // 也可以显式获取枚举常量的值
          std::cout << "Wednesday 的值是: " << Wednesday << std::endl; // 输出 2
      
          return 0;
      }
      
      • 声明枚举类型的变量与声明其他类型的变量类似。
      • 可以直接使用枚举常量来赋值和比较。
      • 注意:虽然枚举常量本质上是整型,但最好将枚举类型视为独立的类型,避免将枚举类型的值与普通的整型值进行直接运算,除非有明确的需要。
    • 指定枚举常量的值

      enum Status {
          Success = 0,
          Warning = 10,
          Error = 20,
      };
      
      • 可以显式地为枚举常量指定整数值。如果只指定部分常量的值,后续常量的值仍然会依次递增。
    • 枚举的应用场景

      • 表示状态码或错误码。
      • 表示选项或模式。
      • 提高代码可读性,使代码更易于理解和维护。