【C++】C++中的枚举enum类型使用详解

2024-07-13 1134阅读

目录

【C++】C++中的枚举enum类型使用详解
(图片来源网络,侵删)

一.什么是枚举enum(WHAT)

二.使用枚举enum的场景(WHEN and WHERE)

三.如何使用枚举enum(HOW)

1)枚举的定义

2)枚举的初始化

3)指定枚举类型 

4)声明枚举对象

5)枚举对象赋值问题

6)枚举的取值范围

四.枚举enum的应用


一.什么是枚举enum(WHAT)

枚举(enumeration)和类相似,能够定义一种新的数据类型,不同的是,枚举是将一组整形常量组织在一起,所以和类的使用方法有一些类似之处。

二.使用枚举enum的场景(WHEN and WHERE)

实际中经常使用枚举来做数据的标识,可以实现对数据的分类,打个比方类似于用Ture和False区分是与非,而枚举也可以在此基础上也用整形常量的方式对数据进行更多的分类。

三.如何使用枚举enum(HOW)

1)枚举的定义

1.不限定作用域的枚举

	enum color
	{
		RED,
		GREEN,
		BLUE
	};

2.限定作用域的枚举

在enum后面加关键字class或者struct

	enum class color
	{
		RED,
		GREEN,
		BLUE
	};

3.二者区别 

解决枚举值重名的问题,保持代码的可读性

//定义两种枚举
	enum class color_inner
	{
		RED,
		GREEN,
		BLUE
	};
	enum color_out
	{
		RED,
		GREEN,
		BLUE
	};
//声明并赋值
color_out backColor = RED; //正确
color_inner forntColor = RED; //错误,默认使用了out中的RED,没有指定作用域
color_out backColor = color_out::RED; //正确,out也可以显示指定作用域
color_inner forntColor = color_inner::RED;  //正确,inner必须指定作用域

2)枚举的初始化

1.默认情况下,枚举值从0开始,依次加1

	enum color
	{
		RED,  //默认是0
		GREEN, //默认是1
		BLUE  //默认是2
	};

2.手动指定枚举值

a.可以全部指定

	enum color
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  
	};

b.可以部分指定,未被初始化的枚举值的值默认将比其前面的枚举值大1

	enum color
	{
		RED=2,  
		GREEN,  //默认值是3,比前一个多1
		BLUE=7  
	};

c.可以重复指定

	enum color
	{
		RED=8,  
		GREEN=5, 
		BLUE=8  //重复指定
	};

3)指定枚举类型 

C++11中,还可以指定给枚举类型赋值的整数类型,在enum的名字后面加上冒号以及指定的类型,限定作用域枚举默认为32位整形,在某些情况下,甚至没必要用到32位,为了节省开销,甚至可以用8位整形unsigned char,将类型指定成后,枚举变量变成了8位整型,减少了内存使用。不限定作用域的枚举类型,其成员不存在默认类型,只需要知道潜在类型是足够大的,肯定能容纳枚举值就行。

需要注意的是,不能指定为float或者double等类型,因为枚举量必须是一个整数,float和double都不是整数。

	enum color:unsigned long
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  
	};

4)声明枚举对象

a.先声明变量,再对变量赋值

#include 
using namespace std;
int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	};
	enum color backColor, frontColor, innerColor;
	backColor = RED;
	frontColor = GREEN;
	innerColor = BLUE;
	cout 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]