C++枚举类型用法总结(枚举字符常量代替常量)

 更新时间:2020年12月09日 09:32:51   作者:三公子Tjq  
这篇文章主要介绍了C++枚举类型用法总结(枚举字符常量代替常量),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

C++枚举类型enum表示枚举,通常用于定义个新类型的字符常量,比如enum {January,February,March}。枚举类型的作用域一般是整个文件或者类内。当枚举类型定义在文件开头时,则作用域是从定义位置开始往后(不包括函数内定义);当枚举类型在类内定义时,则作用域为整个类内。在类内的头文件定义和初始化枚举类型,当实例这个类的对象时,枚举类型不会占用空间,只是包含一个字符常量而已。

枚举类型的定义可以在整个文件夹,也可以在类内。当在整个文件夹时,所有枚举量不能有相同的。当在类内时,不同类的枚举常量可以相同,不影响。下面给出具体代码示例。

一、枚举类型定义在类内(用的是vs2013 IDE)

1.1新建一个控制台应用程序,然后在EnumTest.h,EnumTest.cpp,main.cpp中添加如下代码

EnumTest.h

#pragma once
typedef unsigned long Item;
 
class CEnumTest
{
public:
	CEnumTest();
	~CEnumTest();
 
	const void show() const;		//后面的const表示该函数不可更改类对象,也即是不能更改类对象的成员变量
private:
	enum {One=1,Two=2,Three=3};
 
	Item item[Three];
};

EnumTest.cpp

#include "EnumTest.h"
#include <iostream>
 
CEnumTest::CEnumTest()
{
}
 
const void CEnumTest::show() const
{
	std::cout <<"this->Three=="<<this->Three<<std::endl;
}
 
CEnumTest::~CEnumTest()
{
}

main.cpp

#include <iostream>
#include "EnumTest.h"	
 
int main()
{
	CEnumTest *enumTest = new CEnumTest();
	enumTest->show();
 
	system("pause");
	return true;
}

1.2输出结果如下

1.3总结

可以在类内用枚举定义多组字符常量,这些字符常量在类的头文件中申明和赋值;虽然这些字符常量被赋值了,但是却还是一个字符常量,而不是一个数值,一般枚举字符常量跟switch搭配使用。假如这些枚举字符常量被赋值给整形或者浮点型,则C++11新标准会自动转换为对应类型,编译器默认是用整形常量表示一个枚举类型字符常量的。

二、枚举类定义

枚举类的作用域同样是在定义的类内,但是枚枚举类是专门为枚举创建的类,也就是说,只能用于枚举。

2.1声明代码如下

enum class Data1{ First = 1, Second = 2, Third = 3 };
enum class Data2{ First = 7, Second = 8, Fourth = 9 };

2.2调用代码如下

#include <iostream>
#include "EnumTest.h"	
 
enum class Data1{ First = 1, Second = 2, Third = 3 };
enum class Data2{ First = 7, Second = 8, Fourth = 9 };
 
int main()
{
	CEnumTest *enumTest = new CEnumTest();
	enumTest->show();
 
	/*枚举类*/
	std::cout << "(int)Data1::First==" << (int)Data1::First << std::endl;	//枚举类Data1可以直接用作用域解析运算符::调用对应枚举成员常量Data1::First
	std::cout << "(int)Data2::First==" << (int)Data2::First << std::endl;	//枚举类Data2可以直接用作用域解析运算符::调用对应枚举成员常量Data2::First
 
	system("pause");
	return true;
}

2.3输出结果如下

2.4总结

由上面结果可知,枚举类定义后,可以直接用作用域解析运算符::直接调用对应枚举类的成员常量Data1::First,可以当成一个常量来调用。

以前C语言枚举的常规调用就是在枚举类中去掉class就可以了,即下面代码

enum Data1{ First = 1, Second = 2, Third = 3 };

其它用法跟上面两个基本一样,就不介绍了。

参考内容:

C++ Primer Plus》(第6版)中文版  372-373页

以上就是C++枚举类型用法总结(枚举字符常量代替常量)的详细内容,更多关于C++ 枚举的资料请关注脚本之家其它相关文章!

相关文章

  • C++实现重载矩阵的部分运算符

    C++实现重载矩阵的部分运算符

    这篇文章主要为大家详细介绍了如何利用C++实现重载矩阵的部分运算符,文中的示例代码讲解详细,对我们学习C++有一定帮助,需要的可以参考一下
    2022-10-10
  • C语言编写洗牌发牌程序

    C语言编写洗牌发牌程序

    这篇文章主要为大家详细介绍了C语言编写洗牌发牌程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • VScode运行C++中文终端乱码的解决方案

    VScode运行C++中文终端乱码的解决方案

    这篇文章主要介绍了VScode运行C++中文终端乱码的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Windows注册表中修改UAC(用户账号控制)及批处理脚本

    Windows注册表中修改UAC(用户账号控制)及批处理脚本

    今天小编就为大家分享一篇关于Windows注册表中修改UAC(用户账号控制)及批处理脚本,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++实现关机功能详细代码

    C++实现关机功能详细代码

    大家好,本篇文章主要讲的是C++实现关机功能详细代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • C++ 基本算法 冒泡法、交换法、选择法、实现代码集合

    C++ 基本算法 冒泡法、交换法、选择法、实现代码集合

    大家在学习C语言的时候,老师可能都会讲的几个算法,这里简单整理下,方便需要的朋友
    2013-04-04
  • 基于C++实现的哈夫曼编码解码操作示例

    基于C++实现的哈夫曼编码解码操作示例

    这篇文章主要介绍了基于C++实现的哈夫曼编码解码操作,结合实例形式分析了C++实现的哈夫曼编码解码相关定义与使用技巧,需要的朋友可以参考下
    2018-04-04
  • C++自定义封装socket操作业务类完整实例

    C++自定义封装socket操作业务类完整实例

    这篇文章主要介绍了C++自定义封装socket操作业务类,结合完整实例形式分析了Linux环境下C++操作socket的封装业务类,可实现基本的socket连接、参数设置、发送请求等基本功能,需要的朋友可以参考下
    2017-08-08
  • c语言网络编程-标准步骤(比较简单)

    c语言网络编程-标准步骤(比较简单)

    这篇文章主要介绍了c语言网络编程-标准步骤(比较简单),需要的朋友可以参考下
    2014-01-01
  • C++封装成DLL并调用的实现

    C++封装成DLL并调用的实现

    本文主要介绍了C++封装成DLL并调用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论