我最近收到一位SO用户(在另一个帐户上(的评论,Enum用于创建类型,而不是实例!我想与社区核实一下这是否正确。据我所知,C++中有一个普通的枚举(EnumType(和枚举类。我的que只处理了enum
,没有在任何地方编写enum class
,所以,我想,用户正在谈论枚举类型。那么,假设Enum Type和Enum Class都用于创建类型是否安全?(枚举类型不是类型安全的,而后面的枚举类型则相反(。
在下面的代码中,我进一步想知道创建example
的实例需要什么,它解决了什么目的,因为在步骤(1(中,a得到0,b得到1,那么,创建实例需要什么
编辑:(如有错误,请更正(创建实例的重要性在于,现在hello
只能取a或b,甚至不能取0。
enum example {a, b} ; // create a type, example // (1)
example hello ; // create instance named hello, of type example // (2)
是的,enum
和enum class
都定义了新类型(就像struct
和class
用于定义新类型一样(。是的,enum
不是类型安全的——例如,您可以直接比较两个不相关的enum
,而enum
隐式转换为int
。另一方面,enum class
是类型安全的-您不能比较不相关的类型(不相关的enum class
es(,并且没有隐式转换。
另请参阅:
https://en.cppreference.com/w/cpp/language/enum