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

C++之C++11引入enum class与传统enum关键字总结(二百五十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解C++之lambda匿名函数、typedef、using等用法

2.C++11的enum class与传统的enum关键字介绍

  • C++11引入的enum class关键字来定义枚举
  • 传统的enum关键字定义枚举
  1. 作用范围:enum class创建了一个作用域限定的枚举类型,而enum则创建了一个隐式的全局作用域枚举类型。这意味着使用enum class定义的枚举成员在枚举之外是不可见的,需要通过作用域解析运算符(::)来访问。

  2. 默认类型安全性:enum class提供了更严格的类型安全性,不允许隐式的整数转换。它们不能与整数类型进行直接比较或赋值操作,必须使用显式的类型转换。

  3. 枚举成员的作用域:在enum class中定义的枚举成员在枚举之外是不可见的,因此可以使用相同名称的枚举成员在不同的枚举中进行定义。

总结:enum class提供了更严格的类型安全性和作用域隔离的特性,能够避免命名冲突和隐式类型转换的问题。而传统的enum关键字则更为灵活,但类型安全性、作用域限定方面相对较弱。

3.代码实例

1.传统enum枚举例子

v1.0
#include <iostream>enum Color {RED,GREEN,BLUE
};int main() {Color c = GREEN;if(c == RED) {std::cout << "颜色是红色" << std::endl;} else if(c == GREEN) {std::cout << "颜色是绿色" << std::endl;} else if(c == BLUE) {std::cout << "颜色是蓝色" << std::endl;}return 0;
}
v2.0
#include <iostream>enum Descriptor : int32_t {Invalid = 0,NUM01 = 1
};int main(){//1.将enum class Descriptor枚举类型转换成int32_t类型Descriptor descriptor = Descriptor::NUM01;int32_t value = static_cast<int32_t>(descriptor);printf("value = %d\n",value);//2.将int32_t类型转换成enum class Descriptor枚举类型类型int number = 23;Descriptor desc1 = static_cast<Descriptor>(number);printf("number = %d\n",number);  
}

2.C++11引入enum class枚举例子

v1.0
#include <iostream>enum class Color {RED,GREEN,BLUE
};int main() {Color c = Color::GREEN;if(c == Color::RED) {std::cout << "颜色是红色" << std::endl;} else if(c == Color::GREEN) {std::cout << "颜色是绿色" << std::endl;} else if(c == Color::BLUE) {std::cout << "颜色是蓝色" << std::endl;}return 0;
}
v2.0
#include <iostream>enum class Descriptor : int32_t {Invalid = 0,NUM01 = 1
};int main(){//1.将enum class Descriptor枚举类型转换成int32_t类型Descriptor descriptor = Descriptor::NUM01;int32_t value = static_cast<int32_t>(descriptor);printf("value = %d\n",value);//2.将int32_t类型转换成enum class Descriptor枚举类型类型int number = 23;Descriptor desc1 = static_cast<Descriptor>(number);printf("number = %d\n",number);  
}

相关文章:

C++之C++11引入enum class与传统enum关键字总结(二百五十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

如何将word格式的文档转换成markdown格式的文档

如何将word格式的文档转换成markdown格式的文档 前言 A. 介绍Markdown和Word格式文档 什么是Markdown&#xff1f; Markdown是一种轻量级标记语言&#xff0c;旨在简化文本格式化和排版的过程。它以纯文本形式编写&#xff0c;通过使用简单的标记语法&#xff0c;使文档更具…...

Leetcode—2558.从数量最多的堆取走礼物【简单】

2023每日刷题&#xff08;十二&#xff09; Leetcode—2558.从数量最多的堆取走礼物 大顶堆实现代码 void swap(int *a, int *b) {int tmp *a;*a *b;*b tmp; }void downAdjustHeap(int *heap, int low, int high) {int i low;int j 2 * i 1;while(j < high) {if(j …...

【如何写论文】硕博学位论文的结构框架、过程与大纲分析

硕士论文可以说是毕业前最重要的一部分&#xff0c;也可以说是展示和检验你3年研究生学习的成果的一个考试。硕士论文答辩和检验合格&#xff0c;才能够顺利拿到毕业生和学位证&#xff0c;可见其重要性。 目录 一、基础框架1.1、摘要&#xff08;Abstract&#xff09;1.2、绪论…...

砷化镓(GaAs)纳米线 砷化镓纳米线 GaAs纳米线 瑞禧

砷化镓&#xff08;GaAs)纳米线 名称&#xff1a;砷化镓(GaAs&#xff09;纳米线 直径&#xff1a;50-400 nm 长度&#xff1a;10-80μm 纳米线是一种新型的材料结构&#xff0c;具有较小的直径和高的长度比&#xff0c;因此在纳米电子学、光电器件等领域有着广泛的应用前景…...

PostGreSQL:JSON|JSONB数据类型

JSON JSON 指的是 JavaScript 对象表示法&#xff08;JavaScript Object Notation&#xff09;JSON 是轻量级的文本数据交换格式JSON 独立于语言&#xff1a;JSON 使用 Javascript语法来描述数据对象&#xff0c;但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许…...

树----数据结构

树的概念 树是一种非线性的数据结构&#xff0c;它是由 n (n>1) 个有限结点组成一个具有层次关系的集合&#xff0c;它看起来就像一颗倒挂的树&#xff0c;根朝上&#xff0c;叶朝下。由 0 个节点构成的树&#xff0c;叫做空树。 树的特点&#xff1a;每个结点有 0 个或多…...

GitLab定时备份

GitLab定时备份 文章目录 GitLab定时备份GitLab基础环境备份命令自动清理备份上传命令设置定时任务参考链接 GitLab基础环境 部署方式&#xff1a;Docker 版本&#xff1a;16.2.2 备份命令 Notes&#xff1a; 编写sh脚本时&#xff0c;不要使用Windows上的Notepad类似编辑…...

SQL IN 运算符

SQL IN 运算符 IN 运算符允许您在 WHERE 子句中指定多个值。 IN 运算符是多个 OR 条件的简写。 SQL IN 语法 SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...); 或者 SELECT column_name(s) FROM table_name WHERE column_name IN (SELE…...

虚拟机构建单体项目及前后端分离项目

引言 在现代化办公环境中&#xff0c;会议是组织沟通、决策和合作的重要方式之一。为了提高会议的效率和质量&#xff0c;许多企业选择部署会议OA系统来实现会议管理的自动化和数字化。本博客将介绍如何部署和优化会议OA系统&#xff0c;并探讨前后端分离的SPA项目在此过程中的…...

代码浅析DLIO(一)---整体框架梳理

0. 简介 我们刚刚了解过DLIO的整个流程&#xff0c;我们发现相比于Point-LIO而言&#xff0c;这个方法更适合我们去学习理解&#xff0c;同时官方给出的结果来看DLIO的结果明显好于现在的主流方法&#xff0c;当然指的一提的是&#xff0c;这个DLIO是必须需要六轴IMU的&#x…...

Springboot的Container Images,docker加springboot

Spring Boot应用程序可以使用Dockerfiles容器化&#xff0c;或者使用Cloud Native Buildpacks来创建优化的docker兼容的容器映像&#xff0c;您可以在任何地方运行。 1. Efficient Container Images 很容易将Spring Boot fat jar打包为docker映像。然而&#xff0c;像在docke…...

c 从avi 视频中提取图片

avi 视频的视频流编码必须是jpeg&#xff0c;或者mjpg 直接用摄像头录取的视频都是这两种格式&#xff0c;不能用ffmpeg转成avi的视频。 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.…...

Jtti:Apache服务的反向代理及负载均衡怎么配置

配置Apache服务的反向代理和负载均衡可以帮助您分散负载并提高应用程序的可用性和性能。下面是一些通用的步骤&#xff0c;以配置Apache反向代理和负载均衡。 1. 安装和配置Apache&#xff1a; 确保您已经安装了Apache HTTP服务器。通常&#xff0c;Apache的配置文件位于/etc…...

82.二分查找

目录 什么是二分查找 一、左闭右闭写法[left,right] 代码演示&#xff1a; 二、左闭右开写法[left,right] 代码演示&#xff1a; 今天进行了二分查找的学习。 什么是二分查找 二分查找&#xff08;Binary Search&#xff09;是一种常用的搜索算法&#xff0c;也被称为折…...

线程是如何创建的

线程不是一个完全由内核实现的机制&#xff0c;它是由内核态和用户态合作完成的。pthread_create 不是一个系统调用&#xff0c;是 Glibc 库的一个函数&#xff0c;所以我们还要去 Glibc 里面去找线索。 首先处理的是线程的属性参数。例如前面写程序的时候&#xff0c;我们设置…...

owl_vit安装步骤

owl项目的clip目录与openai的clip重名了&#xff0c;import时容易找不到文件simple_tokenizer。 from clip import simple_tokenizer解决办法: 把clip项目下的simple_tokenizer.py拷贝到owl项目下的clip文件夹 cp simple_tokenizer.py /{project_dir}/scenic/scenic/projects…...

运行real.exe时出现NUM_METGRID_SOIL_LEVELS=0

本人在运行real.exe时&#xff0c;发现出现这样的报错&#xff1a; d01 2020-01-01_00:00:00 ---- ERROR: Mismatch between namelist and global attribute NUM_METGRID_SOIL_LEVELS NOTE: 2 namelist vs input data inconsistencies found. -------------- FATAL CALL…...

【数值计算方法】Gauss消元法及其Python/C实现

文章目录 一、基础理论1. 线性方程组2. Gauss消元法的详细步骤3. 注意事项 二、具体计算过程1. 用Gauss 消元法求A的LU分解&#xff0c;并由此求解方程组 Ax ba. 将A进行LU分解。b. 使用LU分解求解方程组Axb 三、代码实现1. Python代码实现2. C语言代码实现 Gauss消元法&#x…...

ins老被封禁?快来看看这些雷区你踩了没!

做外贸的小伙伴应该都运营或者接触过Instagram&#xff0c;但是忽视平台规则和操作不当很容易出现ins被封号的情况&#xff0c;今天就给大家介绍ins封禁原因&#xff0c;大家在运营过程中就可以很好避免了&#xff01; Instagram 封禁原因 1.短时间内大量关注和点赞操作 为了封…...

手把手教你用云GPU(极链AI云)零成本复现SlowFast视频动作识别,附完整配置文件与避坑指南

零成本云端复现SlowFast视频动作识别全攻略&#xff1a;极链AI云实战与参数精解 在计算机视觉领域&#xff0c;视频理解一直是个充满挑战的方向。不同于静态图像&#xff0c;视频数据包含丰富的时序信息&#xff0c;这对模型架构设计提出了更高要求。SlowFast作为Facebook AI R…...

如何高效使用DdddOcr:免费开源的离线验证码识别终极指南

如何高效使用DdddOcr&#xff1a;免费开源的离线验证码识别终极指南 【免费下载链接】ddddocr 带带弟弟 通用验证码识别OCR pypi版 项目地址: https://gitcode.com/gh_mirrors/dd/ddddocr 在当今数字世界中&#xff0c;验证码识别已成为自动化测试、数据采集和网络安全测…...

PLC编程入门学习路径

PLC编程入门学习路径基础概念理解PLC&#xff08;可编程逻辑控制器&#xff09;是一种工业自动化控制设备。需要理解其工作原理、硬件组成&#xff08;CPU、I/O模块、电源等&#xff09;以及常见的品牌&#xff08;如西门子、三菱、欧姆龙&#xff09;。编程语言学习PLC常用编程…...

DDrawCompat:让经典DirectX游戏在Windows 11重获新生的技术桥梁

DDrawCompat&#xff1a;让经典DirectX游戏在Windows 11重获新生的技术桥梁 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/…...

表面贴装TVS二极管选型与应用全解析

1. 表面贴装功率TVS二极管的核心优势解析在电信基站、工业控制系统等关键电力应用中&#xff0c;一次意外的浪涌事件可能导致数万元设备损坏和数小时系统宕机。传统通孔封装的TVS二极管虽然能提供基础保护&#xff0c;但实测数据显示其引线电感导致的额外电压尖峰可达60V以上。…...

Godot弹幕游戏开发利器:BulletUpHell插件核心功能与实战指南

1. 项目概述&#xff1a;一个为弹幕地狱游戏而生的强大引擎如果你正在用Godot引擎开发一款弹幕射击游戏&#xff08;也就是我们常说的“弹幕地狱”或“STG”&#xff09;&#xff0c;并且正在为如何高效、灵活地生成成千上万颗轨迹各异的子弹而头疼&#xff0c;那么你很可能需要…...

别再写循环了!ABAP SQL聚合函数COUNT/AVG/MAX实战指南,5分钟搞定数据统计

ABAP SQL聚合函数实战&#xff1a;告别低效循环&#xff0c;5分钟掌握高阶统计技巧 每次看到ABAP报表里那些嵌套三层的LOOP和SORT语句&#xff0c;我的血压就会悄悄升高。上周review同事代码时&#xff0c;发现一个统计物料库存的报表竟然用了三个嵌套循环——外层遍历工厂、中…...

YouTube 转 MP3 工具里,为什么预览要放在下载前

很多转换工具看起来解决的是“我要一个 MP3 文件”&#xff0c;但真正影响体验的&#xff0c;往往不是页面上有没有下载按钮。 用户真正想确认的是&#xff1a;这个链接是不是被正确识别了&#xff0c;转换任务是不是还在进行&#xff0c;最后得到的音频是不是值得保存。对 Yo…...

Android本地AI智能家居框架:ZeroClaw架构设计与工程实践

1. 项目缘起与核心愿景几年前&#xff0c;我还在为一个智能家居项目焦头烂额&#xff0c;试图让家里的灯光、空调和音箱能听懂人话&#xff0c;而不是只会执行预设的“回家模式”或“睡眠模式”。当时市面上主流的方案&#xff0c;要么是依赖某个封闭的云平台&#xff0c;所有指…...

Specky:规范驱动开发平台,从AI氛围编程到确定性工程实践

1. Specky&#xff1a;一个重新定义AI辅助开发的确定性工程平台如果你和我一样&#xff0c;在过去几年里深度使用过GitHub Copilot、Claude Code这类AI编程助手&#xff0c;你肯定经历过那种又爱又恨的矛盾感。爱的是&#xff0c;它们确实能快速生成代码片段&#xff0c;把我们…...