C++ 枚举的用法说明与实例
本文通过实例介绍了 C++ 中的枚举类型 enum
以及枚举的用法。
枚举是用来表示一个有限的状态或值的类型。
在 C++ 中,枚举是由整数常量组成的用户定义数据类型。要定义枚举,使用关键字 enum
。下面是一个枚举的示例:
enum season { spring, summer, autumn, winter };
这里, season
是一个枚举类型, spring
, summer
, autumn
和 winter
则是 season
的枚举值。
默认情况下, season
对应的值是 0
, summer
对应的值是 1
,依此类推。当然,如有必要,您可以在声明期间更改枚举元素的默认值,如下:
enum season
{
spring = 0,
summer = 4,
autumn = 8,
winter = 12
};
声明枚举变量
创建枚举类型时,只会创建一个蓝图。以下是创建枚举类型变量的方法:
enum boolean { false, true };
// 在函数内部声明一个枚举变量
enum boolean check;
这里,创建了一个变量 check
, 它是一个 enum boolean
类型的变量。
以下方法同样是声明一个枚举类型的变量,只是和上面的方法略有不同,它同时声明类型和变量:
enum boolean
{
false, true
} check;
C++ 枚举示例
枚举一般用来组合一组有限的常量值,使其更有意义。这里通过两个实例来看一下枚举类型的用法。
示例 1:使用枚举
在本示例中,定义了一个 week
枚举类型,它定义了一周中的每天的常量值。
#include <iostream>
using namespace std;
enum week { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
int main()
{
week today;
today = Wednesday;
cout << "Day " << today+1;
return 0;
}
Day 4
示例 2:更改枚举的默认值
在本示例中,我们展示了更改枚举值的默认值的方法。
#include <iostream>
using namespace std;
enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32};
int main() {
seasons s;
s = summer;
cout << "Summer = " << s << endl;
return 0;
}
这里,我们在定义枚举 seasons
的时候,通过 summer = 4
定义了 summer
的常量值为 4
。
Summer = 4
为什么在 C++ 编程中使用枚举?
在 C++ 中使用枚举主要有以下两个原因:
- 与普通的常量相比,枚举限定了可选的范围,减少了出错的机率。
- 使用枚举的效率和灵活性更高。
让我们看一下下面的例子:
#include <iostream>
using namespace std;
enum suit {
club = 0,
diamonds = 10,
hearts = 20,
spades = 3
} card;
int main()
{
card = club;
cout << "枚举变量的大小 " << sizeof(card) << " 个字节。";
return 0;
}
枚举变量的大小 4 个字节。
这是因为整数的大小是 4 个字节。枚举值对应了整数的值,同时枚举类型限定了可选值的范围,这使得 enum 成为处理标志的好选择。
您也可以使用C++ 结构完成达到相同的目的,但是,使用枚举效率和灵活性更高。
如何使用枚举作为标志?
让我们举个例子。
假设您正在为 Windows 应用程序设计一个按钮。您可以为按钮文本设置标志 斜体 (ITALICS
), 粗体 (BOLD
) 和下划线 (UNDERLINE
)。 我们可以按照如下的方式设计一个枚举类型 designFlags
:
enum designFlags {
ITALICS = 1,
BOLD = 2,
UNDERLINE = 4
} button;
上面伪代码中所有枚举值对应的常量值都是 2
的次方是有原因的。因为 2
的幂的二进制分别如下:
ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100
由于常量值是 2
的次方,因此您可以使用按位或 |
运算符一次组合两个或多个标志而不会重叠。这允许您一次选择两个或多个标志。例如,
#include <iostream>
using namespace std;
enum designFlags {
BOLD = 1,
ITALICS = 2,
UNDERLINE = 4
};
int main()
{
int myDesign = BOLD | UNDERLINE;
// 00000001
// | 00000100
// ___________
// 00000101
cout << myDesign;
return 0;
}
5
当输出为 5 时,您总是知道使用了粗体和下划线。
此外,您可以根据您的要求添加标志。
if (myDesign & ITALICS) {
// code for italics
}
在这里,我们在设计中使用了斜体。注意,使用斜体的代码写在if 语句中。
总结
- 在 C++ 中,枚举类型定义了一组有限的状态或者标志值。
- 枚举值的默认值是可以修改和自定义的。
- 枚举提高了程序的可读性,并降低了程序出错的机率。
您可以在不使用枚举的情况下完成 C++ 编程中的几乎任何事情。但是,它们在某些情况下可能非常方便。这就是好程序员与优秀程序员的区别。