傳統的枚舉類型不是類型安全的,會被視作整數。
C++11 枚舉類型是類型安全的:不能夠被隱式的轉換為整數,同時也不能夠將其與整數數字進行比較,更不可能對不同的枚舉類型的枚舉值進行比較。相當于是創建了一個新的類型。
使用冒號及類型關鍵字來指定枚舉中枚舉值的類型。
enum class new_enum:unsigned int{?
?????value1,
? ? value2,
? ? value3 = 100,
? ? value4 = 100};
輸出時,需要進行一次強制類型轉換,或者重載operator<<操作符:
#include<iostream>
template?std::ostream& operator<<(typename std::enable_if::value, std::ostream>::type& stream, const T& e)
{
? ? return stream << static_cast::type>(e);
}