在传统的C++中,枚举类型并非类型安全,它可视为整数,不同的枚举类型可直接进行比较,且不同类型的枚举值i名称不能相同,这时常给枚举值取名带来困扰.

C++11引入了枚举类(enumaration class),并使用enum class的语法进行声明. 枚举类是类型安全的,它不能被隐式转换为整数,也不能与整数进行比较,更不能对不同枚举类型的枚举值进行比较,但同一个枚举类中的枚举值可进行比较.

枚举类中的枚举值不能直接通过 << 进行输出,需显式的进行类型转换,转换成整数后方可,也可通过重载 << 运算符来进行输出,代码如下:

#include <QCoreApplication>
#include <iostream>
using namespace std;enum class EWeekday : unsigned int
{EMonday = 1,ETuesday,EWednesday,EThursday,EFriday,
};template<typename T>
std::ostream& operator << (typename std::enable_if<std::is_enum<T>::value, std::ostream>::type& stream, const T& e)
{return stream << static_cast<typename std::underlying_type<T>::type>(e);
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);cout << EWeekday::EWednesday << endl;if (EWeekday::ETuesday > EWeekday::EMonday){cout << "Yes" << endl;}else{cout << "No" << endl;}return a.exec();
}

输出结果如下:

3
Yes

C++11: 枚举类ostream相关推荐

  1. c++枚举类型(二) c++11 枚举类

    C++11 标准中引入了"枚举类"(enum class),可以较好地解决如下问题. 新的enum的作用域不在是全局的 不能隐式转换成其他类型 /*** @brief 上述如果 u ...

  2. mysql enum mybatis_Mybatis 枚举类处理

    类型处理器(TypeHandler) 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换 ...

  3. Java枚举类使用和总结

    1.枚举类使用情况一: 1 package com.bie.util; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 /** 7 ...

  4. 使用MyBatis简化枚举类值的存储和读取

    场景描述 我们在实际场景中经常会遇到需要将枚举值存储到数据库中,或是将从数据库中查询到的值对应到枚举类上的情况. 比如表process大致定义如下: -- ---------------------- ...

  5. java mybatis enum_mybatis处理枚举类的简单方法

    mybatis自带对枚举的处理类 org.apache.ibatis.type.EnumOrdinalTypeHandler :该类实现了枚举类型和Integer类型的相互转换. 但是给转换仅仅是将对 ...

  6. 为什么枚举类优于纯枚举?

    本文翻译自:Why is enum class preferred over plain enum? I heard a few people recommending to use enum cla ...

  7. javese 5 中的枚举类及单例模式

    为什么80%的码农都做不了架构师?>>>    首先了解一下 javap 的用法,之后用到:javap -p (private)显示所有类和成员,javap -c  对代码进行反汇编 ...

  8. java中的枚举类_java中的枚举类型

    java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断.同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断. 首先我们用自定义类的方 ...

  9. java.lang包—枚举类Enum

    原文作者:山高我为 原文地址:java enum的用法详解 目录 一.enum关键字 二.Enum类源码 三.疑问 四.Enum常见用法 一.enum关键字 enum关键字是在Java1.5也就是Ja ...

最新文章

  1. php从数据库中读取特定的行
  2. Linux加密和安全
  3. 2014-2015 ACM-ICPC, Asia Xian Regional Contest G The Problem to Slow Down You 回文树
  4. A+B Problem 详细解答 (转载)
  5. 【LeetCode从零单排】No96 Unique Binary Search Trees
  6. LeetCode:跳跃游戏【55】
  7. 思科网络设备及配置详解,网工入门必备指南!
  8. 大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践
  9. 【文末有福利】如何理解我们所处世界的复杂性?
  10. SVG 教程 (五)文本,Stroke 属性,SVG 滤镜,SVG 模糊效果
  11. fatal error C1083: Cannot open include file: 'qttreepropertybrowser.moc': No such file or directory
  12. 第一篇:容易遗忘的“枚举”
  13. php mysql导入excel_如何从PHP导入Excel文件到mysql数据库
  14. 使用nightwatch进行E2E测试中文教程
  15. 图像处理-绘制直方图
  16. 大工20春计算机文化基础在线测试1,大工20春《计算机文化基础》在线测试1学习答题资料...
  17. 设置jupyter notebook软件的字体样式
  18. 前端截取视频第一帧作为封面
  19. 某丰快递分拣小程序-python字典
  20. C# 实现阴历阳历互转

热门文章

  1. java简单小系统-双色球模拟开奖和输入自己的号码查看奖金
  2. 企业网络推广是如何做的?
  3. 企业信用不良对企业发展有何影响?
  4. AD设置某个焊盘铺铜连接方式
  5. 求阶乘倒数的和2020.11.23
  6. 厦门大学计算机保研学校,郑炜-厦门大学计算机科学系
  7. 计算机网络概述 网络的定义与分类
  8. Win7电脑无法安装itunes怎么办?
  9. SSL证书验证原理和https加密
  10. 支付app 支付 弹出 ALIN42273