C++ 枚举enum

在C++中,enum(枚举)是一种用户定义的数据类型,它由一组命名的整数常量组成。枚举在代码中可以提高可读性和维护性,因为它们允许使用有意义的名称来表示整数值。C++支持两种类型的枚举:传统枚举(unscoped enum)和强类型枚举(scoped enum)。

1. 传统枚举(Unscoped Enum)

传统枚举在C++98中引入,它们的枚举值是全局作用域的,可以隐式转换为整数类型。

语法

enum EnumName {
    Enumerator1,
    Enumerator2,
    // ...
    EnumeratorN
};

示例代码

#include <iostream>

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

int main() {
    Color color = RED;

    switch (color) {
        case RED:
            std::cout << "Red color" << std::endl;
            break;
        case GREEN:
            std::cout << "Green color" << std::endl;
            break;
        case BLUE:
            std::cout << "Blue color" << std::endl;
            break;
        default:
            std::cout << "Unknown color" << std::endl;
            break;
    }

    return 0;
}

2. 强类型枚举(Scoped Enum)

C++11引入了强类型枚举,它们的枚举值在枚举类型的作用域内,不会隐式转换为整数类型。这提高了类型安全性和代码的可读性。

语法

enum class EnumName {
    Enumerator1,
    Enumerator2,
    // ...
    EnumeratorN
};

示例代码

#include <iostream>

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

int main() {
    Color color = Color::RED;

    switch (color) {
        case Color::RED:
            std::cout << "Red color" << std::endl;
            break;
        case Color::GREEN:
            std::cout << "Green color" << std::endl;
            break;
        case Color::BLUE:
            std::cout << "Blue color" << std::endl;
            break;
        default:
            std::cout << "Unknown color" << std::endl;
            break;
    }

    return 0;
}

3. 指定枚举值

在定义枚举时,可以显式地为枚举值指定整数值。

示例代码

#include <iostream>

enum Color {
    RED = 1,
    GREEN = 3,
    BLUE = 5
};

int main() {
    Color color = GREEN;

    std::cout << "The value of GREEN is " << color << std::endl;

    return 0;
}

4.枚举的底层类型

在C++11中,可以为强类型枚举指定底层类型。

示例代码

#include <iostream>

enum class Color : char {
    RED = 'r',
    GREEN = 'g',
    BLUE = 'b'
};

int main() {
    Color color = Color::GREEN;

    std::cout << "The value of GREEN is " << static_cast<char>(color) << std::endl;

    return 0;
}

总结

  • 传统枚举(Unscoped Enum):枚举值在全局作用域内,可以隐式转换为整数类型。
  • 强类型枚举(Scoped Enum):枚举值在枚举类型的作用域内,不会隐式转换为整数类型,提供更好的类型安全性。
  • 指定枚举值:可以显式地为枚举值指定整数值。
  • 枚举的底层类型:可以为强类型枚举指定底层类型。

通过这些示例,可以了解enum在C++中的不同用法及其作用。枚举在代码中可以提高可读性和维护性,特别是在处理一组相关的常量时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值