C Primer 筆記 列舉型別

2022-08-19 05:03:09 字數 1157 閱讀 1974

1.和類一樣,每個列舉型別定義了一種新的型別。列舉屬於字面值常量型別。

2.c++包含兩種列舉:限定作用域的和不限定作用域的。c++11新標準引入了限定作用域的列舉型別。

enum

class

/*struct

*/ myenum ; //

限定作用域的列舉

enum

class

/*struct

*/ myenum1 ; //

限定作用域的列舉可以有重複的名字,使用時也必須加上作用域

enum myenum2 ; //

不限定作用域的列舉

enum myenum3 ; //

不限定作用域的列舉不能有重複的名字

enum t,t1; //

未命名的不限定作用域的列舉,只能在定義是就定義物件

3.預設情況下,列舉值從0開始,依次加1,如果沒有顯示提供值,就在前乙個列舉值的基礎上加1。列舉成員是const的。

4.只要enum有名字,我們就能定義並初始化該型別的成員。想要初始化enum物件或者為enum物件賦值,必須使用該型別的乙個列舉成員或者該型別的另乙個物件。

5.乙個不限定作用域的列舉型別的物件或列舉成員自動的轉成整型。

6.在c++11新標準中,我們可以在enum的名字後加上冒號以及我們想在該enum中使用的型別。對於不限定作用域的列舉型別來說,其列舉成員不存在預設型別,我們只知道成員的潛在型別足夠大,肯定能容納列舉值。如果我們指定了潛在型別,則一旦超出範圍將引發錯誤。

enum test : long

;

7.在c++11 新標準中,我們可以提前宣告enum。enum的前置宣告必須指定其成員的大小。

enum test : long;    //

不限定作用域的,必須指定成員型別

enum

class test1; //

限定作用域的列舉型別可以使用預設成員型別int

8.int值不可以做以enmu為形參的函式的實參,當enum做形參時,enum的值提公升成int或更大的整型,實際提公升的結果由列舉型別的潛在型別決定。

列舉型別 筆記

列舉型別是一種使用者自定義型別 是由若干個有名字常量組成的有限集合 使程式的可讀性增強 定義格式 enum 列舉型別名 預設第乙個列舉元素為0,到n 1。enum season spring指定為1,summer 2,autumn 3,winter 4。enum weekday mon 1,tues...

《C Primer》學習之列舉型別和預編譯

列舉型別 以前很少用到,以為直接定義一些狀態變數就行了,幹嘛用列舉啊。最近看了一些程式 覺得列舉確實在有些地方方便簡潔多了,所以就研究總結了一下。列舉用enum關鍵字來定義基本型別是enum xxtype xxa,xxb,xxc 形式很簡單,但是有幾個地方很容易讓人忽略。1.列舉的元素不是變數,是常...

CLR筆記 列舉型別

class program t item 獲取列舉的物件的字串 string names enum.getnames typeof color foreach var item in names t item 使用parse將符號轉化成color型別,下面兩種形式都可以 color c color ...