簡體   English   中英

當我們在 c++ 中使用枚舉(而不是枚舉類)創建類型的實例時,這意味着什么

[英]what does it mean when we create instance of type, created using enum (and not enum class) in c++

我最近收到一個 SO 用戶(在另一個帳戶上)的評論,即枚舉用於創建類型而不是實例。 我想與社區交叉檢查它是否正確。 據我了解,C++ 中有一個普通的枚舉(枚舉類型)和枚舉 Class。 我的 que 只處理enum並且沒有在任何地方寫enum class ,所以,我猜,用戶在談論 Enum-Type。 那么,假設 Enum-Type 和 Enum-Class 都用於創建類型是否安全? (Enum-Type 不是類型安全的,而后者則相反)。

而且,在下面的代碼中,我進一步想知道創建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 class es)並且沒有隱式轉換。

也可以看看:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM