C 11 強型別列舉相關總結

2022-09-25 03:27:11 字數 1090 閱讀 1113

列舉就是定義乙個類別,並且窮舉統一類別下的個體以供**使用。

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 優勢 強作用域,強型別列舉成員的名稱不會被輸出到其父作用...