一、简介
enum是一种数据类型,常用于定义一组命名常量。使用enum关键字可以将一组常量打包成一个集合,使得代码的可读性和可维护性大大提高。
以下是一个使用enum定义星期几的例子:
enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
在这个例子中,Weekday就是一个枚举类型,它包含了七个常量:MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY。它们可以在程序中被使用,例如:
#include <iostream>
using namespace std;
enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
int main() {
Weekday day = MONDAY;
switch (day) {
case MONDAY:
cout << "Today is Monday" << endl;
break;
case TUESDAY:
cout << "Today is Tuesday" << endl;
break;
// ...
default:
cout << "Invalid day" << endl;
break;
}
return 0;
}
上面的程序会输出“Today is Monday”,因为我们将day初始值设为MONDAY。
二、enum常量的默认值
当我们声明一个枚举类型时,如果没有为其中的常量赋值,那么它们的默认值会从0开始自动递增。例如:
enum Numbers {
ONE,
TWO,
THREE
};
其中,ONE的值为0,TWO的值为1,THREE的值为2。
我们也可以手动为枚举常量赋值,这时未被赋值的常量会自动递增。例如:
enum Numbers {
ONE = 1,
TWO,
THREE
};
其中,ONE的值为1,TWO的值为2,THREE的值为3。
三、enum的作用范围
在C++中,枚举类型是一种本地类型,它们的作用域是在它们被定义的命名空间中。例如,在函数内部定义的枚举类型只能在该函数内部访问。
如下例子所示:
#include <iostream>
using namespace std;
void foo() {
enum Fruit {
APPLE,
ORANGE,
BANANA
};
Fruit myFruit = APPLE;
cout << "My fruit is: " << myFruit << endl;
}
int main() {
foo();
// This will produce an error, myFruit is out of scope
// Fruit myFruit = APPLE;
return 0;
}
在函数foo()内部定义的Fruit类型只能在函数内部访问。在函数外部定义的myFruit变量使用会导致编译错误。
四、enum的可读性
使用enum类型可以增强代码的可读性和可维护性,因为使用枚举常量可以代替直接使用数字。
例如,下面的代码可能会让读者感到困惑:
int result = someFunction();
if (result == 0) {
// Do something
} else if (result == 1) {
// Do something else
} else if (result == 2) {
// Do another thing
} else if (result == 3) {
// Do yet another thing
} else {
// Handle invalid result
}
我们可以使用枚举类型:
enum Result {
SUCCESS,
ERROR1,
ERROR2,
ERROR3
};
Result result = someFunction();
if (result == SUCCESS) {
// Do something
} else if (result == ERROR1) {
// Do something else
} else if (result == ERROR2) {
// Do another thing
} else if (result == ERROR3) {
// Do yet another thing
} else {
// Handle invalid result
}
这种使用方式可以让代码更加易读、易维护。
五、enum和switch
在C++中,switch语句可以使用枚举类型。例如:
enum Color {
RED,
GREEN,
BLUE
};
int main() {
Color color = RED;
switch (color) {
case RED:
cout << "Color is red" << endl;
break;
case GREEN:
cout << "Color is green" << endl;
break;
case BLUE:
cout << "Color is blue" << endl;
break;
default:
cout << "Invalid color" << endl;
break;
}
return 0;
}
上述代码会输出“Color is red”。
结论
使用enum类型可以为程序提供更好的可读性和可维护性。编程人员可以使用enum类型为常量赋予有意义的标识符,并避免使用未知含义的数字。
原创文章,作者:BEHX,如若转载,请注明出处:https://www.506064.com/n/145615.html
微信扫一扫
支付宝扫一扫