c++11增加了列舉類和列舉結構體。
舊的c++列舉型別有乙個壞處是,他們將列舉成員引入周圍的命名空間,導致了名稱衝突
enum esecondcount
;int esecond =3;
//與列舉宣告在同乙個作用域
此外,舊的c++ enum會隱式轉換為int,當我們不預期或不需要這樣的轉換時會導致難以察覺的錯誤
enum esecondcount
;int
main()
使用列舉類(又稱新列舉或強列舉)時,這些問題將不再存在,
1.他們的列舉成員對列舉來說是區域性的,但使用時必須加上「列舉名::」
2.他們的值不會隱式轉換為其他型別(比如另乙個列舉或int型別),需要時可使用static_cast或(t)進行顯示轉換
3.可以指定列舉的型別,預設為int,下圖中我指定列舉型別為char,則eday的值為-64.列舉所佔空間大小為1
enum
class
esecondcount
:char
;int
main()
C 強列舉型別
為了解決c c 中的enum型別的一系列缺點,比如 非強型別,允許隱式轉換為int型,占用儲存空間及符號性不確定。c 11引入了列舉類 又稱為 強列舉型別strong typed enum 語法格式 enum class 型別名 如 enum class people 這樣就成功的定義了乙個強型別的...
使用列舉類
當我們需要定義常量時,乙個辦法是用大寫變數通過整數來定義,例如月份 jan 1 feb 2 mar 3 nov 11 dec 12好處是簡單,缺點是型別是int,並且仍然是變數。更好的方法是為這樣的列舉型別定義乙個class型別,然後,每個常量都是class的乙個唯一例項。python提供了enum...
列舉類應用
其中red,green,black分別代表乙個color物件,是乙個color物件的例項 public enum color 測試方法 package com lzj enum1 public class colortest system.out println valueof根據乙個列舉的名字獲取...