当前位置: 首页 > 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 值与整数值进行比较之前,需要先进行强制类型转换。
http://www.lryc.cn/news/67341.html

相关文章:

  • 设计模式之中介者模式
  • DJ5-8 磁盘存储器的性能和调度
  • springboot+vue留守儿童爱心网站(源码+文档)
  • 数字设计小思 - 谈谈非理想时钟的时钟偏差
  • 智慧厕所引导系统的应用
  • 眼球追踪、HDR、VST,从代码挖掘Valve下一代VR头显
  • 【MYSQL】聚合函数和单表/多表查询练习、子查询、内外连接
  • 分布式数据库集成解决方案
  • 如何配置静态路由?这个实例详解交换机的静态路由配置
  • OpenCV教程——图像操作。读写像素值,与/或/非/异或操作,ROI
  • Winforms不可见组件开发
  • 静态链接库与动态链接库
  • ffmpeg 抓取一帧数据
  • 学好数据结构的秘诀
  • IT知识百科:什么是下一代防火墙和IPS?
  • 常量指针和指针常量, top-level const和low-level const
  • 【iOS】-- GET和POST(NSURLSession)
  • @RequestBody,@RequestParam,@RequestPart应用场景和区别
  • libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent
  • 院内导航移动导诊服务体系,院内导航怎么实现?
  • MCTP协议和NCSI
  • Jmeter接口测试流程详解
  • 怎样使用Web自动化测试减少手动劳动?以百度网站为例
  • union和位域的混合使用
  • PMP 高项 07-项目质量管理
  • 鸿蒙Hi3861学习十一-Huawei LiteOS-M(内存池)
  • MySQL原理(七):内存管理和磁盘管理
  • 【Shell脚本】Linux安装Nginx以及开机自启
  • solidworks三维建模竞赛练习题
  • Redis---订阅和发布