Avatar ·

为什么 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` 能如何帮助我?它如何解决这些问题?还有……