在C++中,enum是一種枚舉類型,用于定義一組常量。enum類型只能定義一次,不能重定義。然而,如果需要重新定義enum類型,可以使用enum class關鍵字。
enum class是C++11引入的新特性,用于創建強類型的枚舉類型。使用enum class定義的枚舉類型具有更強的類型安全性,不會自動轉換為整數類型,且枚舉值的作用域限定在enum class內部。
以下是使用enum class重新定義枚舉類型的示例:
enum class Color { Red, Green, Blue };
int main() {
Color color = Color::Red;
// color = 0; // 錯誤,不能將整數賦值給enum class類型
// color = Color::Green; // 錯誤,不能將不同的enum class類型賦值給color
if (color == Color::Red) {
// ...
}
return 0;
}
在這個示例中,enum class Color定義了三個枚舉值:Red、Green和Blue。使用enum class定義的枚舉類型不能直接賦值為整數,也不能將不同的enum class類型賦值給彼此。而且,枚舉值的作用域被限定在Color內部,需要使用Color::Red的方式訪問枚舉值。
需要注意的是,使用enum class重新定義枚舉類型后,枚舉值不再自動轉換為整數類型,需要通過顯式轉換才能將枚舉值轉換為整數。