【C++】enum枚举与强类型枚举

enum

文章目录

  • enum
    • enum枚举
    • 枚举变量
    • 强类型枚举

enum枚举

C++的enum工具提供了一种创建符号常量的方式,这种方式可以替代const
枚举类型定义用关键字enum标识

enum 标识符 
{枚举数据表
}
  • 枚举数据表的值都是整数。第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。也可以人为设定枚举成员的值,从而自定义某个范围内的整数。
  • 可以在定义类型时对枚举常量初始化。
  • 枚举类型可以进行比较。
//Mon的值为1,Tue的值为2,Wed的值为3 ...
enum week {Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};enum Level {UNKNOW = 0,DEBUG = 1,INFO = 2,WARN = 3,ERROR = 4,FATAL = 5
};
  • Mon,Tue,Wed这些常量被称为枚举量
    枚举量可以直接当作define用
printf("%d",Tue);

枚举变量

enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
//a即为枚举变量
//只能将定义枚举时使用的枚举量赋值给枚举变量
enum Month a =  Feb;

强类型枚举

  • 非强类型枚举的缺陷
- 1.当两个枚举内的成员相同时,由于该成员是全局的,故在使用时会造成混淆,报错;
namespace T {enum Type { General, Light, Medium, Heavy };
}namespace {enum Category{ General = 1, Pistol, MachienGun, Cannon };
}int main() {T::Type t = T::Light;if(t == General) {// 此处若没有使用T::General,则将会使用上述全局的Generalcout << "-----" << endl;}return 0;
}- 2.枚举成员总是阔以被隐式转换为整型
  • 解决方法
C++11采用强类型枚举,在enum后加上一个class- 强作用域,不会被输出到父作用域;- 转化限制,不能被隐式转换,比较需要通过显示转换;- 可以指定底层类型,在枚举名称后加上`: type`,type不能为wchar_t
/** 使用强枚举,并指定类型 */
enum class Type : char { General, Light, Medium, Heavy };
enum class Category { General = 1, Pistol, MachienGun, Cannon };void test() {Type t = Type::Light;t = General;            // 错误,需要指定名称if (t == Category::General) {}  // 错误,不同类型不能比较if (t == Type::Light) {}    if((int)t > 0) {}       // 强制转换
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/179407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人脸识别经典网络-MTCNN(含Python源码实现)

人脸检测-mtcnn 本文参加新星计划人工智能赛道&#xff1a;https://bbs.csdn.net/topics/613989052 文章目录 人脸检测-mtcnn1. 人脸检测1.1 人脸检测概述1.2 人脸检测的难点1.3 人脸检测的应用场景 2. mtcnn2.1 mtcnn概述2.2 mtcnn的网络结构2.3 图像金字塔2.4 P-Net2.5 R-Ne…

戴尔科技推出全新96核Precision 7875塔式工作站

工作站行业一直是快节奏且充满惊喜的。在过去25年中,戴尔Precision一直处于行业前沿,帮助创作者、工程师、建筑师、研究人员等将想法变为现实,并对整个世界产生影响。工作站所发挥的作用至关重要,被视为化不可能为可能的必要工具。如今,人工智能(AI)和生成式AI(GenAI)的浪潮正在…

西南科技大学C++程序设计实验二(类与对象一)

C++最大的特点就是面向对象,掌握它的几种基本性质还是好理解的,可以看我C++专栏的期末速成,希望对你们学习C++有帮助。 一、实验目的 1.理解简单类的定义、说明与使用 2.理解类中不同属性数据成员的访问特点 3.理解构造函数、析构函数的作用 重点:掌握类的定义与实现,…

MPPT工作流程及算法和硬件的选择

MPPT算法选择 目前&#xff0c;MPPT算法有开路电压比率(离线)、短路电流比率(离线)、观察调节(在线)、极限追踪控制法(在线)。 在光伏控制系统中&#xff0c;因为日照、温度等条件的变化&#xff0c;光伏电池的输出功率也是在不断变化的&#xff0c;为保证使得光伏电池的输出功…

vue3中的customRef创建一个自定义的 ref对象

customRef 创建一个自定义的 ref&#xff0c;并对其依赖项跟踪和更新触发进行显式控制 小案例: 自定义 ref 实现 debounce <template><div style"font-size: 14px;"><input v-model"text" placeholder"搜索关键字"/><…

linux shell下除了某个文件外的其他文件全部删除的命令

Linux反选删除文件 最简单的方法是 # shopt -s extglob &#xff08;打开extglob模式&#xff09; # rm -fr !(file1) 如果是多个要排除的&#xff0c;可以这样&#xff1a; # rm -rf !(file1|file2) Linuxrm删除指定文件外的其他文件方法汇总 一、Linux下删除文…

【Python】导入Excel数据表的几种方式

如何导入csv、xlsx格式的Excel&#xff1b;一张数据表里有多个sheet页&#xff0c;如何获取所有sheet页名字&#xff0c;并导入每张sheet页&#xff1b; 1. 导入CSV格式的Excel表&#xff1a; import pandas as pd import numpy as npdf_datapd.read_csv(数据底表.csv) print…

渗透测试考核--两层内网 cs windows socks5

这里考核为渗透 这里是网络拓扑图 这里记录一下 两台外网 两台内网 首先拿到C段 nmap进行扫描 外网1 nmap -p 80 172.16.17.2/24 主机存活 一般都是web服务入手 所以我们指定80端口 然后去查找开放的 最后获取到2个ip Nmap scan report for 172.16.17.177 Host is u…

如何高效批量生成条形码?

条形码作为商品、库存和信息管理的基础工具&#xff0c;扮演着至关重要的角色。为了满足用户对于高效、专业、多样化的条形码生成需求&#xff0c;我们推出了一款专业高效的在线条形码生成工具。 网址&#xff1a;https://www.1txm.com/ 多样化条形码支持 易条形支持多种常见…

java文件传输简单方法

java文件传输简单方法 假设现在已经打包了一个文件&#xff08;1233444333&#xff09;&#xff0c;要将这个文件传输给另一方&#xff1a; import java.io.*; public class F_PasswordUnPassword { public static void main (String[] args)throws Exception { ByteArrayOutp…

评价体系如何构建?

本文将针对权重计算的一些常见问题进行说明&#xff1a;如组合赋权法的综合权重值如何计算&#xff1f;多层级权重如何计算&#xff1f;用多种方法计算得到的权重如何合并为综合权重用于之后的分析&#xff1f;常见的不同权重计算方法的搭配方式&#xff1f; 一、九种权重计算…

nodejs之express学习(1)

安装 npm i express使用 // 导入 const express require(express) // 创建应用 const app express() // 创建路由 app.get(/home,(req,res)>{res.end("hello express") }) app.listen(3000,()>{console.log("服务已启动~") })路由的介绍 什么是…

5.27每日一题(判断函数在那个区间上有界:充分条件不是必要条件)

若f(x)在(a , b)上连续&#xff0c;且f(a0)&#xff0c;f&#xff08;b-0&#xff09;存在&#xff08;及函数的左右极限存在&#xff09;>f(x)在(a,b)上有界

神经网络:脑科学中功能MRI成像的应用及其一些相关概念

文章目录 一、MRI成像简介核磁共振成像&#xff08;MRI&#xff09;侵入式成像功能磁共振成像&#xff08;fMRI&#xff09;血氧水平依赖&#xff08;BOLD&#xff09;效应对比基线状态代理指标 二、fMRI具有延迟性及其解决方案原因解决方法 三、fMRI 数据处理1. 数据预处理2. …

【栈和队列(1)(逆波兰表达式)】

文章目录 前言什么是栈(Stack)栈方法栈的模拟实现链表也可以实现栈逆波兰表达式逆波兰表达式在栈中怎么使用 前言 什么是栈(Stack) 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0…

QB/T 1870-2015 塑料菜板检测

塑料菜板是指以聚乙烯、聚丙烯为主要原材料&#xff0c;经注射或压制成型的塑料菜板&#xff0c;通常具有抗菌性能。 QB/T 1870-2015 塑料菜板检测项目&#xff1a; 检测项目 测试标准 邵氏硬度 GB/T 2411 耐热性 QB/T 1870 耐冲击性 QB/T 1870 跌落性能 QB/T 1870 …

详解Tomcat下载安装以及IDEA配置Tomcat(2023最新)

目录 步骤一&#xff1a;首先确认自己是否已经安装JDK步骤二&#xff1a;下载安装Tomcat步骤三&#xff1a;Tomcat配置环境变量步骤四&#xff1a;验证Tomcat配置是否成功步骤五&#xff1a;为IDEA配置Tomcat 步骤一&#xff1a;首先确认自己是否已经安装JDK jdk各版本通用安装…

6、信息收集(1)

文章目录 一、DNS信息查询1、利用dig工具查询各类DNS的解析。2、使用DNS子域名爆破工具&#xff0c;针对子域名进行爆破&#xff0c;同时解析出对应的IP地址。3、利用多地Ping工具&#xff0c;查看域名真实IP。4、针对部分IP进行信息收集 二、DNS域传输实验原理方法一方法二 三…

javaEE -15( 13000字 JavaScript入门 - 2)

一&#xff1a;JavaScript(WebAPI) JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM&#xff0c;这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人). 前面学的 JS 基础语法主要学的是 …

Unity-链接MySql5.7

链接MySql5.7 前言&#xff1a; 为什么不选择最新的MySQL8.0或者MySQL8.2呢&#xff0c;实际发现&#xff0c;如果使用这两个版本&#xff0c;虽然能够用同样的方法找到合适的dll&#xff0c;但是在编写代码的过程中往往会卡死&#xff0c;非常的影响效率&#xff0c;因此放弃…