C++ 枚举定义
我们在平常的编程中,时常需要为一些属性定义一组可以选择的值,比如文件打开的状态可能会有三种:输入 输出和追加
我们一般情况下记录这些状态是让每一个状态和一个常数相对应 比如
const int input=;
const int output=;
const int append=;
这个方法虽然也是可以得,不过它有一个明显的缺点就是 没有指出这些值是相关联的
而C++中的 枚举 提供了一种替代的方法 不但可以定义常数集 还可以将其聚集成组 如下:
enum Cities //enum是关键字 Cities为枚举类型名()
{
zhanjiang, //
Maoming, //0+1
Yangjiang, //1+1
Jiangmen, //2+1
};
在enum中,第一个枚举成员是0 后面每一个枚举成员的值等于前者加1
枚举的赋值
有时候,枚举的情况可能不能很好的符合枚举的默认情况 比如
我们可能希望枚举的值从n开始 不要成0开始
又可能 我们枚举的成员值 俩个不同的成员对应的常数需要是一样的 (比如 在Cities中 前面俩个城市在实际需要中要当成一个 我们就可以把它们对应的常数定义成相同的数)
enum Cities
{
zhanjiang=, //
Maoming, //
Yangjiang, //
Jiangmen, //
beijin=, //
tianjin,//
shanghai,//
Zhongshan = 1000, //
changsha,//
};
这时候,我们就可以根据实际的情况对于enum 进行一定的改变 因为enum中的值有一个性质:
如果有初始值 那么这个成员的值就是 初始值
如果没有 那么它就等于前面成员值加1
有一点需要注意:不能改变枚举成员的值 枚举成员本身就是一个常量表达式
其次我们在定义enum时 都定义了一个新的类型 如我们代码 新类型为Cities
和其他类型一样 可以初始化和定义Cities类型的对象
但是只能通过其枚举成员或者同一枚举类型的对象来进行初始化与赋值
int k=;
double x=10.2;
Cities oneCity = Cities(); //将50通过显式转换,为oneCity赋值
Cities sanjian = shanghai;//通过相同类型来进行初始化
tianjin = ; // 错误 enum定义的是常量 不能修改值
Zhongshan=k; //不同类型 不能修改常量的值
Zhongshan =x; //不同类型 不能修改常量的值
C++ 枚举定义的更多相关文章
- [改善Java代码]推荐使用枚举定义常量
枚举和注解都是在Java1.5中引入的,虽然他们是后起之秀,但是功能不容小觑,枚举改变了常量的声明方式,注解耦合了数据和代码. 建议83:推荐使用枚举定义常量 一.分析 常量的声明是每一个项目中不可或 ...
- 拔高你的Java代码质量吧:推荐使用枚举定义常量(转)
提高你的Java代码质量吧:推荐使用枚举定义常量 一.分析 常量的声明是每一个项目中不可或缺的,在Java1.5之前,我们只有两种方式的声明:类常量和接口常量.不过,在1.5版之后有了改进,即新增了一 ...
- UIView的几个枚举定义
UIView是iOS开发最主要的视图,非常多控件都是继承它,掌握当中的几个基本枚举定义,有利益理解视图的载入和參数差别. 一.UIViewAnimationCurve UIView的基本动画变化规律 ...
- python3 枚举定义和使用
定义 在某些情况下,一个类的对象是有限且固定的,比如季节类,它只有 4 个对象:再比如行星类,目前只有 8 个对象.这种实例有限且固定的类,在 Python 中被称为枚举类.程序有两种方式来定义枚举类 ...
- 一个C++宏定义与枚举定义重复的编译错误
C++的开发效率低是众所周知的,原因比如有: 语言复杂度高 编译效率低 工具链不够完整高效(尤其是linux下) 另外一个恐怕是不少编译错误让人摸不着头脑,今天碰到一个,举个例子: #include ...
- oc中的枚举定义
typedef NS_ENUM(类型,枚举名){ 枚举名+值名, 枚举名+值名,}; 该方法定义的枚举,OC会自动把其转换成合适当前版本的枚举.如果枚举值可合并的话 NS_E ...
- 提高Java代码质量:使用枚举定义常量(转)
一.分析 常量的声明是每一个项目中不可或缺的,在Java1.5之前,我们只有两种方式的声明:类常量和接口常量.不过,在1.5版之后有了改进,即新增了一种常量声明方式,枚举常量.代码如下: enum ...
- C++中枚举定义运算符
由于枚举也是用户定义类型,所以是可以定义运算符, 如: enum Day {sun, mon, tue, wen, thu, fri, sat}; Day& operator++(Day&am ...
- iOS中枚举定义的三种方式
最简单的方式 typedef enum{ num1 = 0, num2 = 1, num3 = 2 }num; 同时我们还可以使用NS_ENUM的方式定义枚举 typedef NS_ENUM (NSI ...
- C# 给枚举定义DescriptionAttribute,把枚举转换为键值对
在C#中,枚举用来定状态值很方便,例如我定义一个叫做Season的枚举 public enum Season { Spring = 1, Summer = 2, Autumn = 3, Winter ...
随机推荐
- 简单理解php的socket编程【网摘】
php的socket编程算是比较难以理解的东西吧,不过,我们只要理解socket几个函数之间的关系,以及它们所扮演的角色,那么理解起来应该不是很难了,在笔者看来,socket编程,其实就是建立一个网络 ...
- 2017.10.5 国庆清北 D5T2 整除
80分暴力 /*找规律80分TLE俩点 忘了啥规律了. */ #include<iostream> #include<cstdio> #include<cmath> ...
- 列出5个python标准库
os:提供了不少与操作系统相关联的函数 sys: 通常用于命令行参数 re: 正则匹配 math: 数学运算 datetime:处理日期时间
- Consul常用接口使用
prometheus.yml 配置 - job_name: 'node_exporter' consul_sd_configs: - server: 'consul_ip:8500' services ...
- Redis企业实战的几个坑
一.前言 小伙伴们对Redis应该不陌生,Redis是系统必备的分布式缓存中间件,主要用来解决高并发下分担DB资源的负载,从而提升系统吞吐量. Redis支持多种数据类型,String(字符串).li ...
- el-select定义初始值并且可以修改
[](https://img2018.cnblogs.com/blog/1338470/201811/1338470-20181112152013318-1731627947.png <el-f ...
- Chrome 浏览器中查看 webSocket 连接信息
1.以下代码实现一个webSocket连接,在文本输入框中输入内容,点击发送,通过服务器,返回相同的内容显示在下方. 1 <!DOCTYPE html> 2 <html lang ...
- spark_API
1.概述 总的来讲,每一个spark驱动程序应用都由一个驱动程序组成,该驱动程序包含一个由用户编写的main方法,该方法会在集群上执行一些并行计算操作.Spark最重要的一个概念是弹性分布式数据集,简 ...
- git工作总结
一.简单介绍 简介:Git是一个开源的分布式版本控制系统,可以有效.高速地处理项目版本管理. 发展史:CSV -> SVN -> Git 优点:Git速度快.开源.完全分布式管理系统 相关 ...
- html5中 input的pattern属性 和 details/summary元素
html5--3.21 课程小结与其他新增元素 一.总结 一句话总结: input的pattern属性可以设置正则验证,比如检测学号的位数和数字区间 details/summary元素配合起来可以做元 ...