• 第5条:用枚举表示状态、选项、状态码


    C++11标准扩充了枚举的特性。

    枚举只是一种常量命名方式。给常量取一个易懂的名字而已。

    几种定义方式:

    1、

      enum State {

        State1,  

        State2,  

        State3,  

      };

      enum State aState = State1;    //使用

    2、

      enum State {

        State1,  

        State2,  

        State3,  

      };

      typedef enum State State;

      State aState = State1;     //使用

    3、

      enum State : NSInteger {

        State1,  

        State2,  

        State3,  

      };     //使用“底层数据类型”来保存枚举类型的变量,这样做的好处是,可以“向前声明”(在.h文件中声明)枚举变量了。若不指定底层数据类型,则无法向前声明枚举类型,因为编译器不不清楚底层数据类型的大小,所以在用到此枚举类型时,也就不知道究竟该给变量分配多少空间了。

      enum State : NSInteger;   //向前声明

    4、

    enum State {

        State1 = 1,  

        State2,  

        State3,  

      };    //不使用编译器所分配的序号,手动指定枚举成员所对应的值。

    5、

      enum State {

        State1 = 0,  

        State2 = 1 << 0,  

        State3 = 1 << 1,

        State3 = 1 << 2,  

      };  //通过“按位或操作符”来组合,还可以用“按位与操作符”来判断是否已启用某个选项。

    例:

      enum State aState = State1 | State2;

      if (aState && State1) {

      }

     6、

    typedef NS_ENUM(NSUInteger, State){

        State1,  

        State2,  

        State3, 

    };

    //略:Foundation框架中定义了一些辅助的宏,用来指定用于保存枚举值的底层数据类型。这些宏具备向后兼容能力。

    枚举类型在switch语句中的运用:

       注意:在处理枚举类型的switch语句中不要实现default分支。这样的话,加入新枚举之后,编译器就会警告提示开发者:swith语句并未处理所有枚举。

  • 相关阅读:
    [华为oj]放苹果
    [华为oj]iNOC产品部-杨辉三角的变形
    值传递和引用传递
    Struts2+Jquery+Json集成
    使用堆栈结构进行字符串表达式("7*2-5*3-3+6/3")的计算
    使用环形链表解决约瑟夫(丢手帕)问题
    tomcat配置数据源
    ORA-01652:无法通过128(在表空间TEMP中)扩展temp段
    (转)Java 代码优化过程的实例介绍
    (转)走进JVM,浅水也能捉鱼
  • 原文地址:https://www.cnblogs.com/Pikdays/p/4114561.html
Copyright © 2020-2023  润新知