C 11 強型別列舉(enum)

2021-06-27 16:41:19 字數 699 閱讀 2824

// c++11之前的enum型別是繼承c的,不溫不火;

// c++11對enum動刀了,加強了型別檢查,推出強型別enum型別,眼前一亮

// 使用過qt 的都知道,早就應該這麼做了,用的很爽!!

// 一、c中enum型別的侷限

// 1、非強型別作用域

enum type1;

enum type2;

//問題來了,兩種列舉型別都有a列舉常量,而且作用域相同,發生了衝突

//2、允許隱式型別轉換

if(type1::a == type2::d)

//兩種不同enum常量比較沒有實際意義,但是編譯器是先將enum常量轉換為int型別後,再比較的,不會報錯

// 3、占用儲存空間極其符號不確定

enum type3;

coutif((int)t > (int)type5::b) //強制型別轉換,可以通過

//3、可以指定底層型別

enum class type6:char;

enum class type7:unsigned int;

//既可以節省空間,又可以指定符號

//三、c++11是相容並拓展了c enum型別的

enum type8:char;

type8 t =a;

//拓展並相容c enum型別

C 11 強型別列舉

c 11引入了一種新的列舉型別,即 列舉類 或 強型別列舉 宣告強型別列舉非常簡單,只需要在enum後加上class或struct即可。例如 enum old 老形式 enum class new 新形式 enum struct new2 新形式傳統的c 列舉型別有一些缺點 如果在相同作用域中的兩個...

走進C 11(二)物件導向之enum 強型別列舉

c 11 物件導向系列 總得來說,c 11標準是一群天才們制定的,每乙個標準的制定都有其應用改進的場景。enum也不例外,這個c 11系列都會有小例子或者分析它解決了什麼痛點。what is enum in c 98 c 11 我們在程式設計時有時想讓乙個變數的值只在規定範圍裡取值,那麼就會考慮使用...

C 11 強型別列舉相關總結

列舉就是定義乙個類別,並且窮舉統一類別下的個體以供 使用。enum public color enum private color red 重定義 enum public color public color 重定義 int main 你可能會想到使用命名空間來封裝列舉型別,但是如果其中的某個命名空...