C++-枚举

        在 C++ 中,枚举(enum)是一种用于定义一组命名整型常量的数据类型。枚举有助于提高代码的可读性和可维护性。C++ 支持两种主要的枚举类型:传统枚举和强类型枚举(也称为“范围枚举”)。

传统枚举

传统枚举的语法如下:

enum Color {
    RED,    // 默认值为 0
    GREEN,  // 默认值为 1
    BLUE    // 默认值为 2
};

重点,可使用遍历

int c = Color::RED;        //RED默认值为0,所以这里c=0;

for(int c = Color::RED + 1; c <Color::BLUE ; c++)

{
        cout<<c;   //输出1,2

}

可使用强制转换:

(Color)c ;  //又将int类型的C转为了Color枚举类型

        在这个例子中,Color 是一个枚举类型,它有三个值:REDGREEN 和 BLUE。默认情况下,枚举值从 0 开始递增,但你也可以指定自定义值:

enum Color {
    RED = 1,
    GREEN = 2,
    BLUE = 4
};

这样设置后,使用强制转换,就需要值对应。

比如: int c = 0;   (Color)c强转就得不到RED,因为此时RED我们设置的值为1

强类型枚举(C++11 及以上)

强类型枚举(enum class)引入于 C++11,提供了更强的类型安全性和更好的作用域控制。其语法如下:

enum class Color {
    RED,
    GREEN,
    BLUE
};

与传统枚举不同,enum class 枚举类型的值不与全局命名空间中的其他标识符发生冲突。访问枚举值需要使用作用域运算符:

Color myColor = Color::RED;

强类型枚举还允许指定底层类型,默认是 int

enum class Color : unsigned int {
    RED,
    GREEN,
    BLUE
};

枚举的操作

  • 传统枚举 可以直接与整数进行比较或赋值:

    Color color = RED;
    if (color == 1) {
        // do something
    }
    
  • 强类型枚举 不能直接与整数进行比较,需要显式转换:

    Color color = Color::RED;
    if (static_cast<int>(color) == 1) {
        // do something
    }
    

使用枚举可以使代码更加清晰、易于理解,尤其是在需要处理一组相关的常量值时。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值