學c的候老師沒有很詳細講到列舉型別,但在學c++和做一些實踐的時候發現,列舉型別有時候是必要的。
有時我們希望某些常量只在類中有效。由於#define定義的巨集常量是全域性的,不能達到目的,於是想當然地覺得應該用const修飾資料成員來實現。const資料成員的確是存在的,但其含義卻不是我們所期望的。const資料成員只在某個物件生存期內是常量,而對於整個類而言卻是可變的,因為類可以建立多個物件,不同的物件其const資料成員的值可以不同。不能在類宣告中初始化const資料成員。const資料成員的初始化只能在類建構函式的初始化表中進行。怎樣才能建立在整個類中都恆定的常量呢?別指望const資料成員了,應該用類中的列舉常量來實現。列舉常量不會占用物件的儲存空間,它們在編譯時被全部求值。
另外,寫程式時,我們常常需要為某個物件關聯一組可選alternative屬性。此時就要用到switch...case,但case後加的是常量,而case1,case2,case3.....這樣根本不知道代表的是什麼,程式的可讀性也很差。這個時候列舉型別就能派上用場了。如enum weather(sunny=0, cloudy, rainy),那麼case sunny就能清晰表示天氣晴朗的操作是什麼。
當然,列舉常量也有缺點:它的隱含資料型別是整數,其最大值有限,且不能表示浮點數(如pi=3.14159)。
C 中列舉型別的作用
c 程式語言作為一種功能強大的語言,對開發人員來說作用是非常大的。不過,其中有很多應用方式還需要我們去不斷的 不斷從中汲取經驗來達到熟練的程度。下面我們就先為大家詳細介紹一下有關c 列舉型別的相關概念。其主要作用就是乙個約定 舉個常用的例子,你要表示星期1 7,你可以用int1 7,但是當你把它作為...
C 列舉型別作用域的思考
c 中的列舉型別繼承於 c 語言。就像其他從 c 語言繼承過來的很多特性一樣,c 列舉也有缺點,這其中最顯著的莫過於作用域問題 在列舉型別中定義的常量,屬於定義列舉的作用域,而不屬於這個列舉型別。例如下面的示例 enum fileaccess fileaccess access read 正確 fi...
定義列舉型別帶有byte 的作用
public enum icon type byte 繼承 byte,這個表示列舉元素使用 byte 儲存。列舉型別預設時 public enum icon type int byte 是 0 255之間的整數,int 是 2147483648 2147483647 enum byte enum y...