// C++11之前的enum类型是继承C的,不温不火;
// C++11对enum动刀了,加强了类型检查,推出强类型enum类型,眼前一亮
// 使用过QT 的都知道,早就应该这么做了,用的很爽!! // 一、C中enum类型的局限
// 1、非强类型作用域 enum type1{a, b, c};
enum type2{a, d, e}; //问题来了,两种枚举类型都有a枚举常量,而且作用域相同,发生了冲突 //2、允许隐式类型转换 if(type1::a == type2::d){;} //两种不同enum常量比较没有实际意义,但是编译器是先将enum常量转换为int类型后,再比较的,不会报错 // 3、占用存储空间极其符号不确定 enum type3{a=, b=0xFFFFFFFFFLL};
cout<<sizeof(type3::a)<<endl;//可能为8,视编译器而定,由其对齐字长决定的
cout<<type3::b<<endl;//输出大小不定,可能为0 //问题来了,存储大小和符号都有未定的因素 // 二、C++11强类型enum类型 //语法: enum class type4:type{a, b, c};//加class,具名,指定底层类型type
enum class type5{a, b, c};//不指定底层类型 //特点及用法:
// 1、强作用域 type4 t = type4::a; //必须指定强类型名称
type4 p = a; //错误 //2、不可隐式转换 if(t<type4::b); //同一个enum类型比较,可以
if(t>type5::b); //非同一个enum类型,不能隐式转换为int等值,不嗯呢该比较
if((int)t > (int)type5::b) //强制类型转换,可以通过 //3、可以指定底层类型 enum class type6:char{a=, b=};
enum class type7:unsigned int{a=0xFFFFFFFF}; //既可以节省空间,又可以指定符号 //三、C++11是兼容并拓展了C enum类型的 enum type8:char{a=, b=};
type8 t =a; //拓展并兼容C enum类型

https://blog.csdn.net/hustyangju/article/details/41978973?utm_source=tuicool&utm_medium=referral

 c++11 对枚举类型的扩充,极大增强了编程实践价值。明确了枚举的语法含义,也方便了使用,特别的解决了,命名冲突,以及隐式类型转换的问题。

最新文章

  1. 轻松搞定C语言中复杂的声明
  2. 【学习】一本案例驱动的jQuery Mobile入门书
  3. Mysql的常用用法
  4. mysql安装配置问题(linux下)
  5. javascript的词法分析
  6. 【spring】non-compatible bean definition of same name and class
  7. (C# 基础) Datatable
  8. 导出EXCEL数据时防止数值变科学计数的办法
  9. Nginx高性能服务器安装、配置、运维 (6) —— Nginx日志及日志分割
  10. 解决Only the original thread that created a view hierarchy can touch its views
  11. Oracle实战笔记(第七天)之PL/SQL进阶
  12. (七十一)关于UITableView退出崩溃的问题和滚动到底部的方法
  13. js基础--浏览器标签页隐藏或显示状态 visibility详解
  14. C语言的split功能
  15. 一个socket数量的问题
  16. Docker Compose vs. Dockerfile
  17. 安装mysql zip5.7版--安裝
  18. Java 成员变量和属性的区别
  19. HDU - 5421:Victor and String (回文树,支持首尾插入新字符)
  20. laravel视图$errors为空

热门文章

  1. ASP.NET Core WebApi使用Swagger生成API说明文档【xml注释版】
  2. SqlServer中#和##的区别
  3. Makoto and a Blackboard CodeForces - 1097D (积性函数dp)
  4. Encryption (hard) CodeForces - 958C3 (树状数组)
  5. mysql update join
  6. jsp页面中使用 splitfn:split注意事项
  7. wpf GridSplitter左右托不了或者拖拽异常
  8. 第一个简单的Echarts实例
  9. echarts图表自适应盒子的大小(盒子的大小是动态改变的),大到需要全屏展示
  10. MyCat配置简述以及mycat全局ID