更喜欢哪个?枚举 class 或嵌套的未命名枚举类型?
Which to prefer? An enum class, or a nested unnamed enum type?
enum Color1 { red, blue, green }; // ok
// enum Color2 { red, blue, green }; // error, enum conflicts
struct Color3
{
enum { red, blue, green }; // ok, no conflicts
};
enum class Color4 { red, blue, green }; // ok, no conflicts
Color1
和 Color2
都是弱类型。
Color3
和 Color4
都是强类型。
我的问题是:
1. Color3
和Color4
有区别吗?
2。更喜欢哪个? Color3
还是 Color4
?为什么?
Color3
and Color4
are both strong typing
没有。试试这个:
int x = Color3::red; // ok
int y = Color4::red; // error: cannot convert from 'Color4' to 'int'
遗留枚举可隐式转换为整数,但 enum class
是它自己的类型。
更喜欢哪个,参考Why is enum class preferred over plain enum?
enum Color1 { red, blue, green }; // ok
// enum Color2 { red, blue, green }; // error, enum conflicts
struct Color3
{
enum { red, blue, green }; // ok, no conflicts
};
enum class Color4 { red, blue, green }; // ok, no conflicts
Color1
和Color2
都是弱类型。Color3
和Color4
都是强类型。
我的问题是:
1. Color3
和Color4
有区别吗?
2。更喜欢哪个? Color3
还是 Color4
?为什么?
Color3
andColor4
are both strong typing
没有。试试这个:
int x = Color3::red; // ok
int y = Color4::red; // error: cannot convert from 'Color4' to 'int'
遗留枚举可隐式转换为整数,但 enum class
是它自己的类型。
更喜欢哪个,参考Why is enum class preferred over plain enum?