天天看點

c++ 中枚舉的簡單用法

1. 為什麼會有枚舉???(大概了解下)

    答:任何新名詞的産生都是為了解決某一個實際問題的。當然枚舉的産生也同樣如此,它是為了更友善的解決某一個問題(馬上下面會說到),沒有枚舉也能解決問題,但是有了枚舉能更友善、更清晰的解決問題。

           舉個例子:

           我們玩一款角色扮演類遊戲,都要先建立角色,如果角色有3種(狂戰士、龍騎士、魔法師),我們該怎麼定義這3種角色呢???

            簡單的方法信手拈來:(變量名采用中文名首字母大寫)

            const int KZS = 100;

            const int LQS = 200;

            const int MFS = 300;

           以上就定義好了3種角色,程式可以這麼寫,但是存在問題,這3個變量,我不清楚本身是相關聯的。感覺像是各自定義不相關的3個變量。不太好了解,一旦這種定義多了,對于大型程式,了解起來都比較費勁!!

           由此,枚舉就産生了。。。

           因為這3種職業都屬于角色這個屬性,他們是相關聯的,使用枚舉來定義更加合适!!更加簡潔!!更加清晰!!

           定義如下:(看不懂沒關系,下面會細講,這邊大概了解為什麼使用枚舉,以及他的定義大緻長什麼樣就行了)

           enum  ACTOR

           {

                KZS = 100,

                LQS = 200,

                MFS = 300

            };

           使用枚舉有如下好處: 這邊定義把3個角色聯系到一起了,不再像const 變量那樣看起來毫無聯系。

2. 枚舉的定義

    定義注意幾點: ① 使用關鍵字 enum 

                              ② 枚舉成員用 逗号(,)隔開,最後不需要逗号(,)

                              ③  成員在 大括号内 {   }

                              ④ 定義最後 大括号 } 後面加分号(;)

     舉例說明如下:

           enum  ACTOR

           {

                KZS = 100,

                LQS = 200,

                MFS = 300

            };

      定義 使用關鍵字 enum 開頭 ,跟着 枚舉名(一般全大寫),接下來 一對大括号 { },大括号内各枚舉成員形如  

      枚舉成員名 = 常量表達式,

     除了最後一行,每行都是以逗号(,)結尾,最後一行不需要逗号(,)

     最後,别忘了,最後大括号 } 後面的分号(;)

     至此,枚舉的定義就完成了,很簡單吧!!!

     這邊多說一句,定義中,不要畫蛇添足,比如出現如下

         int KZS = 100,

     多了個int,這邊不需要類型,本身就是枚舉成員,一定要注意!!!

3. 枚舉的初始化

    枚舉成員初始化必須是 常量表達式(編譯器編譯期間能計算出值的整型表達式),比如 整型字面常量值 屬于 常量表達式

    例子一,  

           enum  ACTOR

           {

                KZS = 100,

                LQS = 200,

                MFS = 300

            };

    第一個枚舉成員KZS 被初始化為 100,

    第二個枚舉成員LQS 被初始化為 200,

    第三個枚舉成員MFS 被初始化為 300;

例子二,  

           enum  ACTOR

           {

                KZS,

                LQS,

                MFS

            };

    第一個枚舉成員KZS 被預設初始化為 0,

    第二個枚舉成員LQS 被初始化為 1,(0+1)

    第三個枚舉成員MFS 被初始化為 2;(1+1)

    枚舉定義中,若未提供初始化式,第一個成員預設初始化為0,後面的成員依次在前1個成員基礎值+1。

例子三,  

           enum  ACTOR

           {

                KZS,

                LQS = 10,

                MFS

            };

    第一個枚舉成員KZS 被預設初始化為 0,

    第二個枚舉成員LQS 被初始化為 10,

    第三個枚舉成員MFS 被初始化為 11;(10+1)

例子四,  

           enum  ACTOR

           {

                KZS,

                LQS,

                MFS = 1

            };

    第一個枚舉成員KZS 被預設初始化為 0,

    第二個枚舉成員LQS 被初始化為 1,(0+1)

    第三個枚舉成員MFS 被初始化為 1;

4. 枚舉成員是 常量

    ① 枚舉成員本身 就是 常量表達式

    ② 因為①,是以不能改變枚舉成員的值

    ③ 任何能用到 常量表達式的地方,都可以使用 枚舉成員。

5. 枚舉注意點

   ① 每個enum 都定義了一個唯一的類型

   ② 同類型的枚舉 可以 指派,不同類型 不能互相 指派

   ③ 枚舉對象的初始化 和 指派,隻能用  其本身枚舉成員  或者 同類型其他枚舉對象。

    舉例說明:    

           enum  ACTOR

           {

                KZS = 100,

                LQS = 200,

                MFS = 300

            };

          和

          enum  PROFESSION

           {

                TEACHER = 1,

                POLICE = 2,

                FARMER = 3

            };

       定義對象如下:

       ACTOR  actor = KZS;   // 正确,使用枚舉類型本身成員 初始化;

       ACTOR actor_1 = 200;   // 錯誤,不能使用 純數字來初始化;錯覺,即使300 和 MFS相關聯,也不能這麼做;

      actor_1 = 300;   // 錯誤,不能使用 純數字來指派;

      actor_1 = actor ;   // 正确,使用 同類型 枚舉對象 來指派;

      PROFESSION  person = actor; // 錯誤,不同類型枚舉對象 不能初始化;

      person = actor_1 ; // 錯誤,不同類型枚舉對象 不能指派;

     本文暫時先介紹這些,枚舉的其他用法(如 用在類中),後續再開博詳說,各位,告辭!!如有不對之處,敬請指正!!轉載請說明出處,謝謝!!!

繼續閱讀