C++枚举类型
C++是一种功能强大且广泛使用的编程语言,它具有丰富的特性和功能。其中之一就是枚举(enumeration)。
1. 枚举的定义
在C++中,枚举是一种用户定义的类型,它由一组命名的整数常量组成,这些常量被称为枚举器。枚举提供了一种定义一组命名的常量的有效方法,这些常量可以被赋予不同的值。
2. 创建枚举
在C++中,可以使用enum
关键字创建枚举。以下是创建枚举的基本语法:
enum EnumName {
enumerator1,
enumerator2,
// more enumerators...
};
创建一个表示一周中的日子的枚举:
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
默认情况下,第一个枚举器的值为0,后续的枚举器的值依次增加。如果要更改这些默认值,可以在枚举器后面加上等号和新的值:
enum Day {
MONDAY = 1,
TUESDAY, // 2
WEDNESDAY, // 3
// ...
};
3. 使用枚举
创建枚举后,可以像其他类型一样使用它。例如,可以创建一个枚举变量,并给它赋值:
Day today = WEDNESDAY;
也可以在条件语句、switch语句等中使用枚举:
if (today == FRIDAY) {
cout << "It's Friday!";
}
switch (today) {
case MONDAY:
cout << "It's Monday.";
break;
case TUESDAY:
cout << "It's Tuesday.";
break;
// ...
}
此外,也可以在函数的参数和返回类型中使用枚举:
void printDay(Day day) {
switch (day) {
case MONDAY:
cout << "Monday";
break;
// ...
}
}
Day getNextDay(Day currentDay) {
return static_cast<Day>((currentDay + 1) % 7);
}
4. 实战
假设我们正在开发一个角色扮演游戏(RPG),游戏中的角色有四种类型:战士、法师、游侠和潜行者。我们可以使用枚举来表示这些类型。
首先,我们创建一个表示角色类型的枚举:
enum class CharacterType {
WARRIOR,
MAGE,
RANGER,
ROGUE
};
然后,我们创建一个表示游戏角色的类,其中有一个成员变量表示角色的类型:
class Character {
private:
CharacterType type;
public:
Character(CharacterType type): type(type) {}
void printType() {
switch (type) {
case CharacterType::WARRIOR:
cout << "Warrior";
break;
case CharacterType::MAGE:
cout << "Mage";
break;
case CharacterType::RANGER:
cout << "Ranger";
break;
case CharacterType::ROGUE:
cout << "Rogue";
break;
}
}
};
最后,我们可以创建一些游戏角色,并输出他们的类型:
int main() {
Character c1(CharacterType::WARRIOR);
Character c2(CharacterType::MAGE);
c1.printType(); // prints "Warrior"
c2.printType(); // prints "Mage"
return 0;
}
5. 结论
在C++中,枚举是一种非常有用的特性,它定义一组有名称的常量。通过使用枚举,使代码更易读和更安全,这是因为枚举强制我们只能使用定义的常量,而不能使用任意的整数。