列舉類 強列舉

2021-10-05 21:26:26 字數 681 閱讀 4596

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根據乙個列舉的名字獲取...