以下C ++ 11代码是什么意思?
enum class myclass_t : int
{
one_element= 1, second_element = 2
};
首先:为什么有int?它显然是指1和2的类型,但我们是否需要它,如果是这样,为什么呢? 第二:正常类,枚举类和普通枚举之间的区别是什么。我已经查了一下,但并没有真正得到它 感谢。
答案 0 :(得分:1)
为什么有
int
?它显然是指1和2的类型,但我们是否需要它,如果是这样,为什么呢?
你不需要这样做,但是现在你可以在C ++ 11中指定底层类型,你可以获得type safety的好处。如果您的表达式超出该类型的范围,它将警告您,而不是编译器更改基础类型。想象一下,如果它是如下所示。
enum class myclass_t : short
{
first_element = 1,
second_element = 2,
third_element = 65536
};
现在,当您尝试编译此代码时,编译器会提示您已超出有效范围。
error: enumerator value 65536 is outside the range of underlying type 'short int' third_element = 65536 ^
不可否认,将您的枚举类定义为int
没有太大价值,因为默认情况下它是该类型,但在您可以使用时,实现类型安全在很大程度上被视为良好做法。及早发现错误总是一件好事。
普通
class
enum class
和普通enum
之间有什么区别?
这个问题是answered here。