类相关的技术细节 -14
来源:互联网 发布:simcms二手车2.0 源码 编辑:程序博客网 时间:2024/06/09 15:12
- 枚举类型
枚举(enum):
它指定一个值的集合,这些值用符号常量来表示,称为枚举量。
enum class Month{ jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,npv,dec };
可以自定义进行对枚举量进行定义,也可以不指定。如果不指定,则编译器将赋予每个枚举量的值为上一个枚举量的值加1.
如果不对第一个枚举量进行定义,则编译器会从0开始计数。
Month m = Month::feb;Month m2 = feb; //错误,feb不在作用域内m = 7; //错误,不能对Month赋int值int n = m; //错误,不能对int赋Month值Month mm = Month(7); //将整型值转换为Month型再进行赋值
需要注意,Month是一个独立的类型,每个Month值都对应一个相等的整型值,但是很多证性质没有相等的Month值。
- “平坦”枚举
使用enum class定义的枚举也被称为“作用域枚举”。
“平坦”枚举和作用域枚举的区别为,平坦枚举将它的枚举量都隐式导出到枚举类型所在的作用域里,并可以隐式转换到int型。
enum Month{ jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,npv,dec };Month m = feb; //正确,feb在该作用域内Month m2 = Month::feb; //正确m = 7; //错误,不能对Month赋int值 int n = m; 正确,可以对int赋Month值(隐式的转换到int)Month mm = Month(7); //转换int到Month
- 运算符重载
enum class Month{ jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,npv,dec };Month operator++(Month& m) // 对前缀递增运算符进行重新定义{ m = (m==Dec)?Jan:Month(int(m)+1); //“绕回” return m;
在进行运算符的重载时,运算对象的数目也也必须和原来一致。比如,可以定义一元的运算符-,但是不能定义一元的<=。可以定义二元的运算符+,但是不能定义二元的!。
一个重载的运算符必须作用于至少一个用户自定义类型的运算对象:
int operator+(int,int);//错误,不能重载内置类型+运算符Vector operator+(const,Vector&,const Vector &);//正确Vector operator+=(const Vector&,int);//正确
阅读全文
0 0
- 类相关的技术细节 -14
- 类相关的技术细节 -13
- 类相关的技术细节 -15
- 函数相关的技术细节-10
- 函数相关的技术细节 -11
- Date日期程序--感受类相关的技术细节 笔记整理
- hibernate相关的细节整理
- json文件的相关细节
- 编程相关的知识点细节
- h.264的技术细节
- SOA 实现的技术细节
- unity c#调用c++ dll相关技术细节整理
- FBReader 的相关文章和细节讨论
- VC对话框加载工具栏的相关细节
- c#窗口位置相关的细节
- 动态代理模式的相关细节描述
- 游戏制作要处理的相关细节
- java 相关的面试小细节
- 关于iframe自适应高度的解决方案
- android DrawerLayout 实现侧滑菜单 知识整理(一)
- 关于Ubuntu的IBUS输入法,输入拼音不能正确显示的解决办法。
- 正则表达式总结
- Android 画虚线却显示实线的问题
- 类相关的技术细节 -14
- ChinaVis 2017
- 图像DCT变换
- CSS3 box-sizing 属性 规定盒模型的宽高计算方式
- leetcode mysql
- [Swift 开发] iOS 颜色值#ffffff转UIColor
- windows下mysql 主从同步(由于XX主义,所以没有文字,不过十分明确表明这是转载!转载!转载!,非原创)
- Ubuntu16.4(64位)下gcc-linaro-arm-linux-gnueabihf交叉编译环境搭建
- 就这样学会怎么把图片上的文字提取出来的小方法