作用域內列舉(C 11)

2021-07-03 08:45:47 字數 709 閱讀 6714

//作用域內列舉

#includeusing namespace std;

/* 下面這兩種定義列舉的方式有錯誤,錯誤提示為列舉數sum重定義。

在c++11之前我們不能在類中定義兩個列舉型別有相同的列舉數。這樣會導致列舉數重定義的錯誤。

*///class test1

//;// enum ;

//};

//class test2

//;// enum age;

//};

/*c++11提供了定義域內列舉的使用方法,我們可以在類中定義兩個列舉型別擁有相同名稱的列舉數,前提是用class關鍵字修飾列舉變數名稱。

並且列舉變數的作用域為類內。

*/class test3

; enum class age;

};/*

無論是c++11之前的列舉變數還是新的作用域內列舉,我們都可以顯示的給列舉型別提供型別,前提是整形。

*/class test4;};

class test5;};

/*另外,常規列舉可以和整形變數自動轉換,存在隱患,作用域內列舉則不能隱式的轉換為整形;

*/class test6

; void show() };

class test7

; void show() };

int main()

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 強型別列舉相關總結

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