// 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=1, 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=1, b=2};
enum class type7:unsigned int{a=0xFFFFFFFF}; //既能够节省空间,又能够指定符号 //三、C++11是兼容并拓展了C enum类型的 enum type8:char{a=1, b=2};
type8 t =a; //拓展并兼容C enum类型

C++11:强类型枚举(enum)的更多相关文章

  1. c++11 强类型枚举 enum class

    在标准C++中,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较.C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一个枚举别型. 此外,枚举所 ...

  2. C++11强类型枚举

    [C++11强类型枚举] 在标准C++中,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较.C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一 ...

  3. c++11 强类型枚举

    c++11 强类型枚举 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #inclu ...

  4. Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举

    一朋友在微信朋友圈晒了张照片,随手点开大图,带着赞赏的眼光扫了下,恩,几个月不见.又美丽了...咦?等等,她戴的这是什么?酷炫的造型! 金属边框! 微型摄像头! 这不是传说中的谷歌眼镜么?土豪啊,还好 ...

  5. C++枚举类型Enum及C++11强枚举类型用法

    C++中的枚举类型常常和switch配合使用,这里用一个简单的switch控制键盘回调的代码片段来说明枚举的用法: //W A S D 前.后.左.右行走 enum Keydown{ Forward= ...

  6. C++11 中的强类型枚举

    // C++11之前的enum类型是继承C的,不温不火: // C++11对enum动刀了,加强了类型检查,推出强类型enum类型,眼前一亮 // 使用过QT 的都知道,早就应该这么做了,用的很爽!! ...

  7. C++11 之 scoped enum

      C++11 枚举类型是“域化的” (scoped enum),相比 C++98 枚举类型的“非域化” (unscoped enum),具有如下优点: 1  命名空间污染  一般来说,声明在花括号内 ...

  8. C++11 强枚举类型

    在标准C++11之前的枚举是继承C的,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较. 一.C中enum类型的局限语法: enum type1{a, b, c}; ...

  9. MySQL字段之集合(set)枚举(enum)

    MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it  分类:MySQL 集合 SET mysql> create table jihe(f1 ...

随机推荐

  1. ORACLE—005:创建JOB(二)

    假设须要创建带參数的job,怎样创建呢. 我们直接将參数声明.并赋值.然后传给job调用的存储过程就可以. 比如.存储过程名为Pro_Test_JOB,參数共同拥有一个.是VARCHAR2类型. 创建 ...

  2. C++教材

    C++语言: 1.<Essential C++>:Stanley B.Lipman著. 旁枝暂略,主攻核心,轻薄短小.附习题与解答,适合刚開始学习的人. 2.<The C++ Pro ...

  3. linux下安装QT过程

    说QT是linux下主要的图形开发工具一点都不过分,虽然诺基亚公司放弃Meego.遣散了Qt开发团队,但是它的各种商业.企业版本还是的到了很好的保护,linux下的开发工具集里还是经常看到它的身影,毕 ...

  4. 以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区

    以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区 以正确的方式开源 Python 项目 英文原文:Open Sourcing a Python Project the Right ...

  5. hdoj 1258 SUM IT UP

    程序的思想是:输入数据是,先使用快排对其从大到小进行排序,然后记录相同数据的个数,比如4 3 3 2 2 1 1,最后的数据变成4 3 2 1 ,并且同时数据的个数f[]变成1 2 2 2 然后就是遍 ...

  6. M I S 开发与管理

    今天是开学的第一天,很意外的一天没课.但是我知道还有很多事情在等待这我,不能懈怠!安排好计划,把重要不紧急的事情逐渐蚕食掉,切不可养虎为患,等拖到它变成重要紧急事件后,那就后悔莫及了. 下午看了看自考 ...

  7. JavaEE session机制

    JavaEE session机制 Http协议: 在讲session之前,必须说下Http协议,HTTP是一个client和server端请求和应答的标准(TCP).由HTTPclient发起一个请求 ...

  8. Windows - Windows的文件名的全路径(Fully Qualified File Name)的最大长度为260字节

    例如,你可以做以下实验来验证这个限制值: 在随意文件夹下新建一个文件夹. 在该新建文件夹下创建一个随意文件.使其名字长度不能再输入为止. 把该文件的全路径名copy到Microsoft Word中进行 ...

  9. 【Swift】—— 中国课程

    Apple宣布更换oc武器语言 Swift ,在牛叉的中国开发者社区9几天之内,以完成.这是福音许多中国的开发商啊,兴奋的发现之后,写存储在日志,马上防止忘记: GitHub开源项目:<The ...

  10. jquery关于表格隐藏和显示问题

    1. 关于指定表格指定列隐藏显示 $(":checkbox[name*=month]").each(function(){ if(!$(this).attr("check ...