C++11: 枚举类ostream
在传统的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相关推荐
- c++枚举类型(二) c++11 枚举类
C++11 标准中引入了"枚举类"(enum class),可以较好地解决如下问题. 新的enum的作用域不在是全局的 不能隐式转换成其他类型 /*** @brief 上述如果 u ...
- mysql enum mybatis_Mybatis 枚举类处理
类型处理器(TypeHandler) 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换 ...
- Java枚举类使用和总结
1.枚举类使用情况一: 1 package com.bie.util; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 /** 7 ...
- 使用MyBatis简化枚举类值的存储和读取
场景描述 我们在实际场景中经常会遇到需要将枚举值存储到数据库中,或是将从数据库中查询到的值对应到枚举类上的情况. 比如表process大致定义如下: -- ---------------------- ...
- java mybatis enum_mybatis处理枚举类的简单方法
mybatis自带对枚举的处理类 org.apache.ibatis.type.EnumOrdinalTypeHandler :该类实现了枚举类型和Integer类型的相互转换. 但是给转换仅仅是将对 ...
- 为什么枚举类优于纯枚举?
本文翻译自:Why is enum class preferred over plain enum? I heard a few people recommending to use enum cla ...
- javese 5 中的枚举类及单例模式
为什么80%的码农都做不了架构师?>>> 首先了解一下 javap 的用法,之后用到:javap -p (private)显示所有类和成员,javap -c 对代码进行反汇编 ...
- java中的枚举类_java中的枚举类型
java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断.同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断. 首先我们用自定义类的方 ...
- java.lang包—枚举类Enum
原文作者:山高我为 原文地址:java enum的用法详解 目录 一.enum关键字 二.Enum类源码 三.疑问 四.Enum常见用法 一.enum关键字 enum关键字是在Java1.5也就是Ja ...
最新文章
- php从数据库中读取特定的行
- Linux加密和安全
- 2014-2015 ACM-ICPC, Asia Xian Regional Contest G The Problem to Slow Down You 回文树
- A+B Problem 详细解答 (转载)
- 【LeetCode从零单排】No96	Unique Binary Search Trees
- LeetCode:跳跃游戏【55】
- 思科网络设备及配置详解,网工入门必备指南!
- 大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践
- 【文末有福利】如何理解我们所处世界的复杂性?
- SVG 教程 (五)文本,Stroke 属性,SVG 滤镜,SVG 模糊效果
- fatal error C1083: Cannot open include file: 'qttreepropertybrowser.moc': No such file or directory
- 第一篇:容易遗忘的“枚举”
- php mysql导入excel_如何从PHP导入Excel文件到mysql数据库
- 使用nightwatch进行E2E测试中文教程
- 图像处理-绘制直方图
- 大工20春计算机文化基础在线测试1,大工20春《计算机文化基础》在线测试1学习答题资料...
- 设置jupyter notebook软件的字体样式
- 前端截取视频第一帧作为封面
- 某丰快递分拣小程序-python字典
- C# 实现阴历阳历互转