首页 > 编程语言 >C++11——5.9 强类型枚举

C++11——5.9 强类型枚举

时间:2023-08-27 22:45:55浏览次数:43  
标签:11 Blue 5.9 enum C++ 枚举 Green 类型 Red

详细介绍请见:★★★原文链接★★★:https://subingwen.cn/cpp/enum/

 

枚举语法(C++98):

关键字enum  枚举名字(可以不写,不写就是匿名枚举)  {枚举值};

#include <iostream>
using namespace std;

// 枚举在相同作用域内全局范围内可见(定义在类内 就类内全局可见;定义在全局 就全局可见)
// 因此相同的枚举值只能有 1 个(即使枚举名字不同(花括号前面的名字),但是枚举值(花括号里)相同也不行)
// enum { Red, Green, Blue };
enum Color { Red, Green, Blue };

int main() {
	cout << "red:" << Red << endl;
	cout << "green:" << Green << endl;
	cout << "blue:" << Blue << endl;
	return 0;
}

res:

  

在枚举类型中的枚举值编译器会默认从0开始赋值,而后依次递增。

 

强类型枚举语法:

关键字enum  关键字class或struct(都一样)  枚举名字(如果指定底层类型(默认为int),这里应该是 枚举名字:指定类型 )  {枚举值};

#include <iostream>
using namespace std;

enum class Color { Red, Green, Blue };	// ★★★枚举值的类型默认为int型
enum class Color2 :char { Red, Green, Blue };	// 将枚举值的类型变为char类型

enum TestColor :char { Red = 'a', Green, Blue };	// ★★★普通枚举

int main() {
	// cout << "red:" << Red << endl;	// ★★★报错;强类型枚举值的访问必须加上枚举名字
	// cout << "red:" << Color::Red << endl;	// ★★★还是报错;虽然强类型枚举的底层默认类型为int,但是强类型枚举成员值不能进行隐式转换,要显示转换
	cout << "red:" << (int)Color::Red << endl;

	cout << "Color size:" << sizeof(Color::Red) << endl;
	cout << "Color2 size:" << sizeof(Color2::Red) << endl;

	// ★★★C++11对原有枚举进行了扩展
	// 1. 可以加作用域访问(当然也可以不加)
	// 2. 可以对底层枚举值的类型进行修改(枚举名字后加":"和"类型")
	cout << "TestColor red:" << Red << endl;	// ★★★普通枚举会自动进行类型转换(强类型枚举不会)
	cout << "TestColor green:" << TestColor::Green << endl;
	return 0;
}

res:

  

★★★原文链接★★★:https://subingwen.cn/cpp/enum/

(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)

标签:11,Blue,5.9,enum,C++,枚举,Green,类型,Red
From: https://www.cnblogs.com/wjjgame/p/17661017.html

相关文章

  • 基于opencv-pyhton与opencv-c++的结合理解与学习
    2023年上半年,一直在学习opencv-c++版本,学习了其中的多个库函数笔记链接:https://www.cnblogs.com/Tan-code/category/2339311.htmlopencv-python读取图片,画圆等基本操作:opencv-c++多个库函数:opencv-python与opencv-c++结合理解:结合两段代码来比较实现:#导入所需模块......
  • C++—结构体
    8结构体8.1结构体基本概念结构体属于用户自定义的数据类型,允许用户存储不同的数据类型8.2结构体定义和使用语法:struct结构体名{结构体成员列表};通过结构体创建变量的方式有三种:struct结构体名变量名struct结构体名变量名=定义结构体时顺便创建变量总结1:定......
  • C++基础
    一、具备的基础变量(variables):类型(types):int,float,char,struct...作用域(scope)循环(loops):while,for流程控制:if-else,switch-case知道一个程序需要编译、连结才能被执行知道如何编译和连接(如何建立一个可运行程序)二、应当养成正规的、大气的编程习惯以良好的方式编写C++classObj......
  • C++—程序流程结构
    4程序流程结构C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码4.1选择结构4.1.1if语句作用:执行满足条件的语句if语句的......
  • C++—指针
    7指针7.1指针的基本概念指针的作用:可以通过指针间接访问内存内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址7.2指针变量的定义和使用指针变量定义语法:数据类型*变量名;指针变量和普通变量的区别普通变量存放的是数据,指针变量存放......
  • C++—数组
    5数组5.1概述所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个数据元素都是相同的数据类型特点2:数组是由连续的内存位置组成的5.2一维数组5.2.1一维数组定义方式一维数组定义的三种方式:数据类型数组名[数组长度];数据类型数组名[数组长度......
  • C++—函数
    6函数6.1概述作用:将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。6.2函数的定义函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return表达式语法:返回值类型函数名(参数列......
  • C++初识
    1.1注释作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码两种格式单行注释://描述信息通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明多行注释:/*描述信息*/通常放在一段代码的上方,对该段代码做整体说明提示:编译器在编译代码时,会忽......
  • Acwing. 第 118 场周赛
    Acwing.第118场周赛比赛链接这几天开学了,一直在宿舍歇着来着,从下周一开始就要开始加训了!!!A题循环串:给定两个整数n,a,请你用前a个小写字母为循环节,构成一个无限长的循环字符串,然后输出该字符串的前n个字符。例如,当a=2时,循环字符串为ababab...,当a=3时,循环字符串为......
  • C++空类中有哪些成员函数?
    一共有6个成员函数。1.构造函数2.拷贝构造函数3.析构函数4.赋值运算符5.取址运算符6.取值运算符const1#include<iostream>2usingnamespacestd;34classEmpty5{6Empty();//构造函数7Empty(Empty&);//拷贝构造函数8~Empty();......