当前位置: 首页 > 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.短时间内大量关注和点赞操作 为了封…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...