C++中使用枚举
在有些情况下,变量只能有一组特定的取值。例如,彩虹不能包含青绿色,指南针的方位不能为“左”。在这些情况下,需要定义这样一种变量,即其可能取值由您指定。为此,可使用关键字 enum 来声明枚举。枚举由一组称为枚举量(emumerator)的常量组成。
在下面的示例中,枚举 RainbowColors 包含彩虹的各种颜色,如 Violet 等枚举量:
enum RainbowColors
{Violet = 0,Indigo,Blue,Green,Yellow,Orange,Red
};
下面的枚举包含基本方位:
enum CardinalDirections
{North,South,East,West
};
可使用枚举来指定变量的类型,这样声明的变量只能取指定的值。因此,如果要声明一个变量,用于存储彩虹的颜色,可以像下面这样做:
RainbowColors MyFavoriteColor = Blue; // Initial value
上述代码声明了变量 MyFavoriteColor,其类型为 RainbowColors。这个变量只能取 RainbowColors 中指定的值,而不能取其他值。
注意:
编译器将枚举量( Voilet 等)转换为整数,每个枚举量都比前一个大 1。您可以指定起始值,如果没有指定,编译器认为起始值为 0,因此 North 的值为 0。
如果愿意,还可通过初始化显式地给每个枚举量指定值。
以下程序演示了如何使用枚举常量来存储 4 个基本方位,并对第一个方位进行了初始化:
#include <iostream>
using namespace std;enum CardinalDirections
{North = 25,South,East,West
};int main()
{cout << "Displaying directions and their symbolic values" << endl;cout << "North: " << North << endl;cout << "South: " << South << endl;cout << "East: " << East << endl;cout << "West: " << West << endl;CardinalDirections windDirection = South;cout << "Variable windDirection = " << windDirection << endl;return 0;
}
输出:
Displaying directions and their symbolic values
North: 25
South: 26
East: 27
West: 28
Variable windDirection = 26
分析:
这里将 4 个基本方位定义为枚举常量,并将第一个常量( North)的值设置为 25(第 6 行),这自动将随后的常量分别设置为 26、 27 和 28,如输出所示。第 20 行创建了一个类型为 CardinalDirections 的变量,并将其初始值设置为 South。第 21 行显示该变量时,编译器显示的是 South 对应的整数值 26。
该文章会更新,欢迎大家批评指正。
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器