c++11 enum class

文章目录

c++11中新的枚举

c++11 中引入了enum class, 相对于传统的enum. 克服了以下传统问题:

  • 传统enum可隐式转换为int, 对不想如此的编程人员会造成错误
  • 传统enum会将其范围提升为全局, 可能会造成名字冲突
  • 传统enum底层类型无法指定, 造成误解, 兼容性问题和不能前向声明

简单例子:

    enum Level
    {
        easy,
        mid,
        hard,
    };

    enum class Weapon; // 先声明

    Weapon get();  // 使用

    enum class Weapon // 最后定义
    {
        stick,
        knife,
        sword,
    };

    if (0 == easy) {  // 这个是没问题的
        std::cout << "easy" << std::endl;
    }

    if (0 == Weapon::stick) { // 这个在c++11中是错误, 编译不通过
        std::cout << "stick" << std::endl;
    }

    Weapon a = stick; // 错误, 范围不对. 必须用 Weapon::stick 来赋值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值