请解释 enum 和 enum class 的区别。
在 C++ 中,enum
和enum class
(也称为强类型枚举)有以下区别。
首先,从作用域来看,传统的enum
是弱类型的枚举,它的枚举成员的作用域是在包含这个枚举的作用域内。例如:
enum Color {
RED,
GREEN,
BLUE
};
在这个例子中,RED
、GREEN
和BLUE
可以直接在定义它们的作用域内访问。如果在另一个地方定义了同名的枚举成员,就会产生命名冲突。
而enum class
是强类型枚举,它的成员具有自己的作用域。例如:
enum class NewColor {
RED,
GREEN,
BLUE
};
这里的NewColor::RED
、NewColor::GREEN
和NewColor::BLUE
只能通过枚举类型名NewColor
来访问