列舉就是定義乙個類別,並且窮舉統一類別下的個體以供**使用。
enum public_color ;
enum private_color ; // red 重定義
enum public_color ; // public_color 重定義
int main()
你可能會想到使用命名空間來封裝列舉型別,但是如果其中的某個命名空間漏寫了名字則會變成匿名空間,而匿名空間中的所有列舉成員會預設變成全域性命名空間下的成員。因此這種方法是不合適的。
enum class enum_name: elem_type ;
enum class public_color ; // ok
enum private_color ; // ok
enum class public_color ;
enum private_color ;
if (public_color::green == 1)
if (private_color::purple == 1)
enum clas程式設計客棧s public_color: char ;
enum private_color: int ;
cout << sizeof(public_color::green) << endl; // 1
cout << sizeof(private_color::purple) << endl; // 4
enum class public_color ;
enum private_color ;
if (public_color::green == private_color::purple)
if (private_color::purple == private_color::pink)
enum class public_color: char ;
enum private_color: int ;
cout << static_cast(public_color::red) << endl; // 0
cout << static_cast(private_color::purple) << endl; // 1
C 11 強型別列舉
c 11引入了一種新的列舉型別,即 列舉類 或 強型別列舉 宣告強型別列舉非常簡單,只需要在enum後加上class或struct即可。例如 enum old 老形式 enum class new 新形式 enum struct new2 新形式傳統的c 列舉型別有一些缺點 如果在相同作用域中的兩個...
C 11 強型別列舉(enum)
c 11之前的enum型別是繼承c的,不溫不火 c 11對enum動刀了,加強了型別檢查,推出強型別enum型別,眼前一亮 使用過qt 的都知道,早就應該這麼做了,用的很爽!一 c中enum型別的侷限 1 非強型別作用域 enum type1 enum type2 問題來了,兩種列舉型別都有a列舉常...
強型別列舉以及C 11對原有列舉型別的擴充套件
非強型別作用域,允許隱式轉換為整型,占用儲存空間及符號性不確定,都是列舉類的缺點。針對這些缺點,新標準c 11引入了一種新的列舉型別,即 列舉類 又稱 強型別列舉 語法 在enum後加上關鍵字class enum class enumtype 優勢 強作用域,強型別列舉成員的名稱不會被輸出到其父作用...