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 ; // 错误,不同类型枚举对象 不能赋值;

 

     本文暂时先介绍这些,枚举的其他用法(如 用在类中),后续再开博详说,各位,告辞!!如有不对之处,敬请指正!!转载请说明出处,谢谢!!!

     

       

 

 

 

 

   

 

           

            

  • 27
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值