C++11 中的强类型枚举
// 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 对枚举类型的扩充,极大增强了编程实践价值。明确了枚举的语法含义,也方便了使用,特别的解决了,命名冲突,以及隐式类型转换的问题。
C++11 中的强类型枚举的更多相关文章
- c++11 强类型枚举
c++11 强类型枚举 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #inclu ...
- C++11强类型枚举
[C++11强类型枚举] 在标准C++中,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较.C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一 ...
- Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举
一朋友在微信朋友圈晒了张照片,随手点开大图,带着赞赏的眼光扫了下,恩,几个月不见.又美丽了...咦?等等,她戴的这是什么?酷炫的造型! 金属边框! 微型摄像头! 这不是传说中的谷歌眼镜么?土豪啊,还好 ...
- C#中的强类型说明
转载原地址: http://www.cnblogs.com/JeffreyZhao/archive/2009/02/27/mvc-use-strong-type-everywhere.html 我们继 ...
- 在C#编程中玩转枚举,分享我的EnumHelper。
在C#编程中玩转枚举,分享我的EnumHelper. 在软件开发过程中,我们经常会为特定的场景下的特定数据定义逻辑意义.比如在用户表中,我们可能会有一个用户状态字段,该字段为整形.如果该字段的值为1则 ...
- 一起学习c++11——c++11中的新语法
c++11新语法1: auto关键字 c++11 添加的最有用的一个特性应该就是auto关键字. 不知道大家有没有写过这样的代码: std::map<std::string, std::vect ...
- C++11 中值得关注的几大变化(网摘)
C++11 中值得关注的几大变化(详解) 原文出处:[陈皓 coolshell] 源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 ...
- 03-TypeScript中的强类型
在js中不能定义类型,而是根据赋值后,js运行时推断类型.在ts中支持强类型,强类型包括string.number(浮点型,不是整型).boolean.any(任意类型).Array<T> ...
- C++11 中值得关注的几大变化(详解)
源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里. ...
随机推荐
- vue组件添加事件@click.native
1,给vue组件绑定事件时候,必须加上native ,否则会认为监听的是来自Item组件自定义的事件 2,等同于在子组件中: 子组件内部处理click事件然后向外发送click事件:$emit(&q ...
- Unity VR-播放demo模型后无法移动视角
资源源于:小意思VR 唉..可怜一下自己,这个问题百度google也不知道怎么搜,没搜出来,在群里问出来的. 当时感觉自己Unity有问题..(就是因为自己啥也不会看不懂) 按右键.或者WASD视角都 ...
- CVE-2018-19985漏洞学习
简介 4.19.8之前,在Linux内核中,hso_probe()函数中发现了一个缺陷,该函数从USB设备(作为u8)读取if_num值,并且不需要对数组进行长度检查就使用它来索引数组,从而导致在hs ...
- Bash Plays with Functions CodeForces - 757E (积性函数dp)
大意: 定义函数$f_r(n)$, $f_0(n)$为pq=n且gcd(p,q)=1的有序对(p,q)个数. $r \ge 1$时, $f_r(n)=\sum\limits_{uv=n}\frac{f ...
- Jquery 控制table中的checkbox 相关选中事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Oracle Help 类
public static string ConnString = @"Data Source=xxx;USER ID=xxx;PASSWORD=xxx"; /// <sum ...
- MySQL两种内核对比
MySQL内核 https://blog.csdn.net/baichoufei90/article/details/83504446 关键字:全文索引 索引外置 两种内核:MyISAM 和InnoD ...
- java实现spark常用算子之map
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- Redis之面试题总结
缓存雪崩 缓存穿透 缓存与数据库双写一致 最后 随着系统访问量的提高,复杂度的提升,响应性能成为一个重点的关注点.而缓存的使用成为一个重点.redis 作为缓存中间件的一个佼佼者,成为了面试必问项目. ...
- PostgreSQL 自增主键
1.自增主键:2.创建序列 一.使用SERIAL自增主键 create table test_no( id SERIAL primary key, name ) ); 二.创建序列 INCREMENT ...