为什么 enum class 被认为比普通 enum 在 C++ 中更安全?
大家好!我最近开始学习 C++,遇到了枚举。我知道有两种声明方式:老式的 `enum` 和新的 `enum class`(从 C++11 开始)。我读到 `enum class` 更“安全”,但不太明白实际区别在哪里。
这是我写的一个例子:
```cpp
enum Color { RED, GREEN, BLUE };
enum TrafficLight { RED, GREEN, YELLOW }; // 错误:RED 和 GREEN 重复声明
int main() {
Color c = RED;
TrafficLight t = RED; // 我本以为这能工作,但……
return 0;
}
```
我立刻遇到了问题:不能声明两个具有相同元素名称的枚举,编译器会报错。此外,我注意到可以写类似这样的代码:
```cpp
int x = RED; // 这能工作,但这正常吗?RED 从意义上说不是数字。
if (c == 0) { ... } // 把颜色和数字比较——这合法吗?
```
请告诉我,`enum class` 能如何帮助我?它如何解决这些问题?还有……