当前位置: 首页 > news >正文

C++ enum 和enum class

文章目录

    • C++ enum 和 enum class
    • 共同点
    • 区别

C++ enum 和 enum class

在C++中, enum 是一种定义枚举类型的方法。 一个枚举是一个整数值的命名集合。 可以通过以下方式创建一个枚举类型:

enum Color {RED,GREEN,BLUE
};

这里我们定义了一个名为 Color 的枚举类型,并包括三个命名值: REDGREENBLUE 。 在默认情况下,第一个名称的值是0,后续名称的值将递增。

我们可以使用此枚举类型来定义变量:

Color myColor = RED;

我们也可以直接访问枚举中的某个值(注意:这不是枚举的类型):

int value = GREEN;

enum 中,虽然命名值在同一个命名空间(namespace)中,但它们的作用域是全局的。

另一方面,enum class 是C++11引入的新特性。与传统的枚举类型相比,enum class 具有更严格的类型检查和更高的安全性。 在 enum class 中,命名值不再具有全局作用域。 这是 enumenum class 的一个主要区别。

我们可以使用以下方式创建一个 enum class

enum class Color2 {RED,GREEN,BLUE
};

这里我们定义了一个名为 Color2enum class,并包括三个命名值: RED, GREEN, 和 BLUE 。 请注意,在 enum class 中,命名值是在类型范围内定义的。 因此,我们将命名值作为 Color2::RED 等限定符使用。

我们可以使用下面的语句定义变量:

Color2 myColor2 = Color2::RED;

我们也可以直接访问枚举中的某个值:

int value = static_cast<int>(Color2::GREEN);

enum class 中,命名值的作用域仅限于该 enum class。 这意味着我们不能在不使用限定符的情况下直接引用命名值。

共同点

  • enumenum class 都是定义枚举类型的方法。

区别

  • 在默认情况下,enum 是基于int类型的;而 enum class 明确指定了底层类型(默认为int)。
  • enum 中,命名值在全局范围内具有作用域。 但在 enum class 中,命名值的作用域限制在 enum class 内部。
  • enum 命名值之间可以进行赋值、比较等操作,而在 enum class 中,只有类型相同的枚举值才能进行此类操作。
  • enum 与普通的整型值之间可以交换转换,但是很容易出现类型不匹配等问题。 而在将 enum class 值与整数值进行比较之前,需要先进行强制类型转换。

相关文章:

C++ enum 和enum class

文章目录 C enum 和 enum class共同点区别 C enum 和 enum class 在C中&#xff0c; enum 是一种定义枚举类型的方法。 一个枚举是一个整数值的命名集合。 可以通过以下方式创建一个枚举类型&#xff1a; enum Color {RED,GREEN,BLUE };这里我们定义了一个名为 Color 的枚举类…...

设计模式之中介者模式

参考资料 曾探《JavaScript设计模式与开发实践》&#xff1b;「设计模式 JavaScript 描述」中介者模式JavaScript 设计模式之中介者模式 定义 在我们生活的世界中&#xff0c;每个人每个物体之间都会产生一些错综复杂的联系。在应用程序里也是一样&#xff0c;程序由大大小小…...

DJ5-8 磁盘存储器的性能和调度

目录 5.8.1 磁盘性能简述 1、磁盘的结构和布局 2、磁盘的类型 3、磁盘数据的组织和格式 4、磁盘的访问过程 5、磁盘访问时间 5.8.2 磁盘调度算法 1、先来先服务 FCFS 2、最短寻道时间优先 SSTF 3、扫描算法&#xff08;电梯算法&#xff09;SCAN 4、循环扫描算法 …...

springboot+vue留守儿童爱心网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的留守儿童爱心网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…...

数字设计小思 - 谈谈非理想时钟的时钟偏差

写在前面 本系列整理数字系统设计的相关知识体系架构&#xff0c;为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中&#xff0c;时钟信号的好坏很大程度上影响了整个系统的稳定性&#xff0c;本文主要介绍了数字设计中的非理想时钟的偏差来源与影响。 &#xff08;本文长…...

智慧厕所引导系统的应用

智慧公厕引导系统是一种基于智能化技术的公厕管理系统&#xff0c;可以为如厕者提供更加便捷、舒适、安全的如厕环境和服务&#xff0c;同时也可以引导如厕者文明如厕&#xff0c;营造文明公厕的氛围。智慧公厕引导系统可以通过智能引导屏、手机小程序等方式&#xff0c;为如厕…...

眼球追踪、HDR、VST,从代码挖掘Valve下一代VR头显

擅长爆料、挖掘线索的Brad Lynch&#xff0c;此前发布了Quest Pro等设备的线索文章引发关注。​近期&#xff0c;又公布一系列与“Valve Deckard”VR头显相关消息&#xff0c;比如支持眼球追踪、HDR、VST透视、Wi-Fi网络等等。在SteamVR 1.26.1测试版更新、Steam用户端、Gamesc…...

【MYSQL】聚合函数和单表/多表查询练习、子查询、内外连接

目录 1.聚合函数 1.1.group by子句 1.2.having语句 2.单表查询 2.2单表查询 3.多表查询 3.2.子查询 5.内链接 6.外连接 1.聚合函数 函数说明count返回查询到的数据的数量sum返回查询到的数据的总和avg返回查询到的数据的平均值max返回查询到的数据的最大值min返回查询…...

分布式数据库集成解决方案

分布式数据库集成解决方案 分析访问部署扩展.1 以界面方式创建数据库&#xff08;采用DBCA&#xff09; # 背景 由于公司业务的发展&#xff0c;要求在其它三个城市设立货仓&#xff0c;处理发货业务。公司本部运行着一套用Sybase数据库的MIS系统可以实现发货&#xff0c;该系统…...

如何配置静态路由?这个实例详解交换机的静态路由配置

一、什么是静态路由 静态路由是一种路由的方式&#xff0c;它需要通过手动配置。静态路由与动态路由不同&#xff0c;静态路由是固定的&#xff0c;不会改变。一般来说&#xff0c;静态路由是由网络管理员逐项加入路由表&#xff0c;简单来说&#xff0c;就是需要手动添加的。…...

OpenCV教程——图像操作。读写像素值,与/或/非/异或操作,ROI

1.读取像素值 我们可以通过mat.ptr<uchar>()获取图像某一行像素数组的指针。因此如果想要读取点(x50&#xff0c;y0)&#xff08;⚠️即(row0,col50)&#xff09;的像素值&#xff0c;可以这样做&#xff1a;mat.ptr<uchar>(0)[50]。 在本节将介绍另外几种直接读…...

Winforms不可见组件开发

Winforms不可见组件开发 首先介绍基本知识,有很多的朋友搞不清楚Component与Control之间的区别,比较简单形象的区别有下面两点: 1、Component在运行时不能呈现UI,而Control可以在运行时呈现UI。 2、Component是贴在容器Container上的,而Control则是贴…...

静态链接库与动态链接库

静态链接库与动态链接库 一、从源程序到可执行文件二、编译、链接和装入三、静态链接库与动态链接库四、静态链接库与动态链接库的制作与使用1.静态库的制作及使用2.动态库的制作及使用 一、从源程序到可执行文件 由于计算机无法直接理解和执行高级语言&#xff08;C、C、Java…...

ffmpeg 抓取一帧数据

FFmpeg功能比较强大&#xff0c;这里记录一条从摄像机抓拍的一条命令&#xff1a; ffmpeg.exe -i rtsp://admin:hisense2021192.168.1.64:554/live0.264 -r 1 -ss 00:00:00 -t 00:00:01 -f image2 image.jpg ; ---执行成功。 这是一条网络摄像机的抓图命令&#xff0c;其实就…...

学好数据结构的秘诀

学好数据结构的秘诀 作为计算机专业的一名“老兵”&#xff0c;笔者从事数据结构和算法的研究已经近20余年了&#xff0c;在学习的过程中&#xff0c;也会遇到一些问题&#xff0c;但在解决问题时&#xff0c;积累了一些经验&#xff0c;为了让读者在学习数据结构的过程中少走…...

IT知识百科:什么是下一代防火墙和IPS?

引言 随着网络攻击的日益增多&#xff0c;防火墙和入侵防御系统&#xff08;Intrusion Prevention System, IPS&#xff09;已成为企业网络安全的必备设备。然而&#xff0c;传统的防火墙和IPS已经无法满足复杂多变的网络安全威胁&#xff0c;因此&#xff0c;下一代防火墙和I…...

常量指针和指针常量, top-level const和low-level const

区分常量指针和指针常量&#xff0c;并且认识什么是top-level const和low-level const。 1.判别&#xff1a; 拿到一个指针&#xff08;例如const int* a),就从左往右读&#xff0c;只看const和*。const读作常量&#xff0c;*读作指针,int类型这些不用管。 2.指针常量 int a…...

【iOS】-- GET和POST(NSURLSession)

文章目录 NSURLSessionGET和POST区别 GET方法GET请求步骤 POSTPOST请求步骤 NSURLSessionDataDelegate代理方法AFNetWorking添加头文件GETPOST第一种第二种 NSURLSession 使用NSURLSession&#xff0c;一般有两步操作&#xff1a;通过NSURLSession的实例创建task&#xff1b;执…...

@RequestBody,@RequestParam,@RequestPart应用场景和区别

ReqeustBody 使用此注解接收参数时&#xff0c;适用于请求体格式为 application/json&#xff0c;只能用对象接收 RequestParam 支持application/json&#xff0c;也同样支持multipart/form-data请求 RequestPart RequestPart这个注解用在multipart/form-data表单提交请求的方法…...

libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent

文章目录 1. 为什么需要缓冲区&#xff1f;2. 水位3. bufferevent常用API3.1 evconnlistener_new_bind()3.2 evconnlistener_free()3.3 bufferevent_socket_new()3.4 bufferevent_enable()3.5 bufferevent_set_timeouts()3.6 bufferevent_setcb()3.7 bufferevent_setwatermark(…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...