当我们在c++中使用enum(而不是enum类)创建类型的实例时,这意味着什么



我最近收到一位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)

是的,enumenum class都定义了新类型(就像structclass用于定义新类型一样(。是的,enum不是类型安全的——例如,您可以直接比较两个不相关的enum,而enum隐式转换为int。另一方面,enum class是类型安全的-您不能比较不相关的类型(不相关的enum classes(,并且没有隐式转换。

另请参阅:

https://en.cppreference.com/w/cpp/language/enum

最新更新