enum列舉型別作為成員變數

2021-06-19 16:44:12 字數 1291 閱讀 3742

enum是列舉型別。

定義形式一:

enum 列舉型別名

列舉變數1(,列舉變數2,……);

如enum weekday

today;

weekday 為列舉型別名,today為列舉變數,大括號裡面的monday,tuesday等都是列舉常量。其中,monday為0,tuesday為1,wednesday=2,thursday=3,saturday=10,sunday=11.

列舉型別還有另外一種定義形式,即省略型別名。

定義形式二:

enum

列舉變數1(,列舉變數2,……);

如enum

today;

雖然省略了型別名,但c++會自動給該列舉型別取乙個型別名,形如__unamed_0000_1。

注意:1.列舉常量的值不允許再修改。因為它是常量。如monday=4;這是錯的。

2.不能用整數給列舉變數賦值。

如today=0;這是錯的。因為型別不匹配。應該改為:today=(weekday)0;

但如果列舉型別的定義形式為第二種形式,則today=(weekday)0也是錯誤的。原因很簡單。因為weekday未定義。假設此時,c++給該列舉型別取的型別名為__unnamed_0000_1,那麼,today=(__unnamed_0000_1)0;是否正確呢?

答案是否定的。

如果列舉型別定義在另乙個類的定義中,則列舉變數,列舉常量都可以做為該類的成員變數。但是,列舉型別名是類的靜態型別。

#include

using namespace std;

class myclass

public:

enum weekday

monday=0,tuesday=1,wednesday,thursday,friday,saturday,sunday

}first,second;//列舉型別的第一種定義形式,列舉型別名為weekday。

int main()

myclass aclass;

aclass.first=myclass::monday;//列舉常量monday作為類的成員變數

aclass.first=myclass::weekday::moday;//編譯器警告:warning c4482: 使用了非標準擴充套件: 限定//名中使用了列舉「myclass::weekday」。不應該採取這種方法。

aclass.first=(myclass::weekday)0;// 整數賦給列舉變數。但是必須型別轉化。適用於列舉變數的//的第一種定義形式。

除錯環境為windowsxp+vs2008

列舉型別(enum)

enum 是計算機程式語言中的一種資料型別 列舉型別。應用場景 有些變數的取值被要求在乙個確定的範圍內,例如一周有 7天,一年 12個月,或者使用者自定義的今天安排要學習的百家姓有 4個等等。定義 在列舉型別的定義中列舉出所有的可能取值,該變數的取值只能是所列舉的範圍。格式 enum 列舉名 enu...

enum列舉型別。

列舉 定義常量符號,就是巨集定義常數的集合體 比如 四季,星期,意義相關的常數 狀態機 1 根據當前狀態,這個週期結束,就成了下乙個狀態。2 根據你的當前狀態,還和你的輸入有關。比如 fpga,gui 通過列舉,可以將一些常量賦值給某些固定的字串常量。可以通過改變列舉型別的狀態來達到自己的一些目的。...

enum列舉型別

public enum mm aa,bb,cc,dd enum列舉定義好之後,經過編譯後,會變成乙個類,類裡面包含了所有的列舉常量,對於每個列舉常量,主要包含了2個內容 name 和 ordinal,name就是名字,比如上面的 aa,bb 這些就是名字,ordinal 是 int 型別,儲存的是位...