enum
大家好!我是兔飞飞!今天学enum!
C++ 的 enum 就是一堆固定的整数值,帮你取了好听的名字,方便你写代码和看代码时不出错。
为什么需要 enum?
假设你在写一个程序表示颜色,如果直接用数字:
int color = 1; // 1 表示红色,2 表示绿色,3 表示蓝色
过几天你再看这段代码,你可能忘了 1、2、3 各自代表什么。而且有人不小心写成 color = 99,还完全不会报错。
这时候,enum 就派上用场了!
用法
enum Color {
RED, // 0
GREEN, // 1
BLUE // 2
};
enum 会帮你定义一组固定值:RED = 0, GREEN = 1, BLUE = 2。然后你在代码里就可以直接用名字:
Color myColor = RED;
if (myColor == GREEN) {
// do something
}
这样不仅看起来更清楚,还能防止乱用无关的数字。
简单规则
-
默认从 0 开始,依次递增
如果你不喜欢默认值,也可以自己设定:enum Color { RED = 10, GREEN = 20, BLUE = 30 };这样
RED是 10,GREEN是 20。 -
enum class更安全(C++11 引入)
普通enum的名字会混在一起,容易和其他东西冲突,比如:enum Color { RED, GREEN, BLUE }; enum Fruit { APPLE, GREEN, BANANA }; // GREEN 会冲突!为了解决这个问题,C++11 引入了
enum class,每个枚举值都有自己的作用域:enum class Color { RED, GREEN, BLUE }; enum class Fruit { APPLE, GREEN, BANANA }; Color c = Color::RED; // 必须加 Color::,更安全 Fruit f = Fruit::APPLE;
总结
C++ 的 enum 就是把数字换成容易记的名字,enum class 是它的升级版,更安全,适合大项目。
例子
比如你写一个交通灯控制程序:
#include <iostream>
enum class TrafficLight {
RED,
YELLOW,
GREEN
};
void displayLight(TrafficLight light) {
switch (light) {
case TrafficLight::RED:
std::cout << "Stop!" << std::endl;
break;
case TrafficLight::YELLOW:
std::cout << "Caution!" << std::endl;
break;
case TrafficLight::GREEN:
std::cout << "Go!" << std::endl;
break;
}
}
int main() {
TrafficLight light = TrafficLight::RED;
displayLight(light); // 输出:Stop!
return 0;
}
2690

被折叠的 条评论
为什么被折叠?



