广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中的枚举如何使用
  • 126
分享到

C++中的枚举如何使用

2023-07-05 08:07:11 126人浏览 泡泡鱼
摘要

这篇文章主要介绍了c++中的枚举如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中的枚举如何使用文章都会有所收获,下面我们一起来看看吧。一、枚举是什么枚举(enumeration)类型用于存放用户指

这篇文章主要介绍了c++中的枚举如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中的枚举如何使用文章都会有所收获,下面我们一起来看看吧。

    一、枚举是什么

    枚举(enumeration)类型用于存放用户指定的一组整数值(§iso.7.2)。枚举类型的每种取值各自对应一个名字,我们把这些值叫做枚举值(enumerator)。

    二、使用步骤

    枚举类型分为两种:

    enum class,它的枚举值名字位于enum的局部作用域内,枚举值不会隐式地转换成其他类型。

    普通的enum,它的枚举值名字与枚举类型本身位于同一个作用域中,枚举值隐式地转换成整数。

    普通枚举和类枚举最显著地差异是“作用域”不同和“隐式类型转换”,接下来我们分开讲。

    1.作用域

    枚举类

    枚举名字前面带class修饰符地枚举就是枚举类,它地成员作用域在enum内部,外部是不能直接访问的,需要通过类名::访问。举一个例子:

    enum class Lights{    red,green,yellow};

    你在类外面直接访问red或其它任何元素都是不行的,正确的访问方式是:

    Lights::red

    和类访问公有成员是一样的。

    普通枚举

    普通枚举就是不带class修饰符的枚举,它的枚举值名字与枚举类型本身位于同一个作用域中。不需要通过名字访问,举个例子:

        enum Lights{        red, green,yellow    };

    访问方式和类枚举也有显著差别,直接使用枚举值名字就行了。

    red//或Lights::red;

    和在函数里访问一个局部变量是一样的,不需要显式指定枚举名字,也可以显式指定枚举名字,效果一样的。

    未命名枚举

    还有一种枚举就是既不加class修饰,也不写枚举名字,而是只有枚举值,例如:

    enum{red,green,yellow};

    这种枚举访问方式和普通枚举一样,就是少了一个枚举名访问方式(因为没有名字,所以没法用名字访问)。

    red

    2.隐式类型转换

    枚举常用一些整数类型表示,每个枚举值是一个整数。如果不显式指定枚举值,那么枚举值是默认从0开始的正整数。这一点对于所有的枚举类型都是一样的。

    //枚举类enum class Lights{red,// 0green,// 1yellow// 2};//普通枚举enum Lights{red,// 0green,// 1yellow// 2};//未命名枚举enum {red,// 0green,// 1yellow// 2};

    不同的是使用class修饰的枚举类型,它的枚举值是不能隐式转换成其他类型的(这里是int)。比如:

    //枚举类int ecl = Lights::red;//这是错误的//普通枚举int el =  Lights::red;//这是正确的//未命名枚举int l = red;//这是正确的

    3.显式指定枚举值类型

    如果我们不显式指定枚举值类型,那么枚举值默认是带符号或无符号的整型。我们也可以显式指定枚举值类型为char或其他类型,例如:

    enum class Lights:int{red,green,yellow};//sizeof(Lights) == 4enum class Lights:char{red,green,yellow};//sizeof(Lights) == 1

    4.指定枚举值的值

    前面我们知道如果不显式指定枚举值的话,默认是int,而且值是从0开始的依次往后排的。也就是,第一个值是0,第二个是1,第三个是2…

    enum class Lights{red = 0,green = 1,yellow = 2};

    上面的效果和默认值是一样的。

    还有一种方法是可以给枚举值指定负数,比如-1,考虑下面的代码:

    enum class Lights{red = -1,green,yellow};

    需要注意的是,上面red指定为-1,green没有指定值,那么green就是默认0,yellow就是1,依次递增。

    不过这种命名方式多少有点不符合常理了,虽然语法上没有错,编译也不会报错,但是不建议这么用。就维持默认就行了。

    4.整形显式转换成枚举

    一个整数类型的值可以显式地转换成枚举类型。如果这个值属于枚举的基础类型的取值范围,则转换是有效的;否则,如果超出了合理的表示范围,则转换的结果是未定义的。考虑下面的例子:

        enum class Flag:char {x =1,y =2,z =4,e=8,f=127,g=128};    Flag flag4 = static_cast<Flag>(5);    Flag flag5 = static_cast<Flag>(999);

    char的取值范围是-128-127,f=127的值是没问题的,但是g=128的值会引发窄化转换错误,从而导致编译报错。

    再看下面的两个,虽然编译器不报错,但是5不是枚举里面的值,这么做失去意义;999严重超过char的取值范围,但是不会触发窄化转换的错误,导致未定义的行为。

    关于“C++中的枚举如何使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C++中的枚举如何使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网其他教程频道。

    --结束END--

    本文标题: C++中的枚举如何使用

    本文链接: https://www.lsjlt.com/news/350702.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C++中的枚举如何使用
      这篇文章主要介绍了C++中的枚举如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中的枚举如何使用文章都会有所收获,下面我们一起来看看吧。一、枚举是什么枚举(enumeration)类型用于存放用户指...
      99+
      2023-07-05
    • C# 枚举如何使用
      这篇文章主要介绍“C# 枚举如何使用”,在日常操作中,相信很多人在C# 枚举如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# 枚举如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!为什么使用...
      99+
      2023-06-14
    • C++中enum枚举如何使用
      这篇文章将为大家详细讲解有关C++中enum枚举如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++ enum枚举格式:enum < 枚举类型名> {< 枚举表&g...
      99+
      2023-06-17
    • C#枚举和枚举成员怎么使用
      这篇文章主要讲解了“C#枚举和枚举成员怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#枚举和枚举成员怎么使用”吧!C#枚举类型是一种的值类型,它用于声明一组命名的常数。(1)C#枚...
      99+
      2023-06-17
    • C语言的枚举如何使用
      这篇文章主要介绍“C语言的枚举如何使用”,在日常操作中,相信很多人在C语言的枚举如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言的枚举如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!概述...
      99+
      2023-06-30
    • C#枚举中如何使用Flags特性
      这篇文章主要介绍了C#枚举中如何使用Flags特性,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如果对一个值可以包含多个,那么可以使用枚举,加上Flags。新建一个Flags...
      99+
      2023-06-29
    • C# 枚举的使用简介
      目录为什么使用枚举?枚举有哪些用法?1、简单枚举2、标志枚举3、枚举使用的一些建议枚举这个名词大家都听过,很多小伙伴也使用过, 那么枚举在开发中能做什么,使用它后能给程序代码带来什么...
      99+
      2022-11-11
    • 解读C++中枚举(enum)的使用
      目录前言一、枚举是什么二、使用步骤1.作用域2.隐式类型转换3.显式指定枚举值类型4.指定枚举值的值4.整形显式转换成枚举总结前言 对于开发C++来说,枚举是一个几乎必然用到的功能。...
      99+
      2023-03-06
      C++枚举使用 C++枚举 enum C++枚举
    • 【javaSE】 枚举与枚举的使用
      文章目录 🎄枚举的背景及定义⚾枚举特性总结: 🌲枚举的使用🚩switch语句🚩常用方法📌示例一Ὄ...
      99+
      2023-09-20
      java 开发语言 枚举 源码 反射
    • C++11中强类型枚举的使用
      目录1.C/C++98中的枚举的缺陷2.强类型枚举的使用1.C/C++98中的枚举的缺陷 枚举在C语言中是狠古老的类型,它分为匿名枚举和具名枚举,如果是匿名枚举,那么它的用法只有一种...
      99+
      2023-02-02
      C++11 强类型枚举
    • 如何正确的在C#项目中使用枚举
      本篇文章给大家分享的是有关如何正确的在C#项目中使用枚举,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。枚举基础枚举类型的作用是限制其变量只能从有限的选项中取值,这些选项(枚举类...
      99+
      2023-06-06
    • C#IEnumerator枚举器的具体使用
      1、对象只要一个类型实现了IEnumerable接口就能遍历2、IEnumerator是枚举器,一个接口类,实现MoveNext->Current->Reset3、yie...
      99+
      2022-11-13
    • C#枚举类型怎么使用
      本篇内容介绍了“C#枚举类型怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#枚举,枚举是一种值类型,由许多名字的常量(也叫枚举表)...
      99+
      2023-06-17
    • C#枚举类型的应用
      这篇文章主要讲解了“C#枚举类型的应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#枚举类型的应用”吧!C#枚举类型应用是怎么样的呢?首先我们来看看几个问题:◆C#枚举类型与基础类型的转...
      99+
      2023-06-17
    • C#枚举的高级应用
      文章开头先给大家出一道面试题: 在设计某小型项目的数据库(假设用的是 MySQL)时,如果给用户表(User)添加一个字段(Roles)用来存储用户的角色,你会给这个字段设置什么类型...
      99+
      2022-11-13
    • 详解C#枚举中使用Flags特性
      如果对一个值可以包含多个,那么可以使用枚举,加上Flags。 新建一个Flags枚举类型: [Flags] public enum Show { A ...
      99+
      2022-11-13
    • 如何使用VB.NET枚举
      这篇文章主要介绍了如何使用VB.NET枚举,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在程序运行的过程中始终固定不变的量称为常量。由于在程序设计和开发时经常会反复地运用一些...
      99+
      2023-06-17
    • python如何使用枚举
      小编给大家分享一下python如何使用枚举,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用枚举我们常用 For 循环来遍历某个列表,同样我们也能枚举列表的索引与...
      99+
      2023-06-27
    • 枚举如何在MyBatis中使用
      这篇文章给大家介绍枚举如何在MyBatis中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体方法如下:public enum ComputerState { OPEN(10), //开启 CLOSE(11),...
      99+
      2023-05-31
      mybatis 枚举
    • 在Java中如何使用枚举
      这篇文章给大家分享的是有关在Java中如何使用枚举的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。枚举类型(Enumerated Types) 让我们先看下面这一段小程序: enum Day {SUNDAY, MO...
      99+
      2023-06-03
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作