2019-05-25 OC中枚举的使用

枚举在系统框架中用的很多,优点是可以以一组常量清楚表示某些状态或可组合的选项。比如我们在表示socket的连接状态的时候可以分为connected,connecting和disconnected。这时候就很适合用枚举了

基本使用

声明

enum socketConnectionState{
    connectting,
    disconneted,
    connected
};

使用,比较繁琐,我们要告诉这是枚举类型,以及加上枚举的名称

 enum socketConnectionState state = connected;

用typedef去简化使用

声明

enum socketConnectionState{
    connectting,
    disconneted,
    connected
};
typedef enum socketConnectionState socketConnectionState

这里typedef作用是告诉系统enum socketConnectionState 跟 socketConnectionState是一样的
使用

socketConnectionState state = connected

使用底层数据类型(int,string)去表示枚举值

由于我们如果使用枚举值去做if等其他逻辑判断的时候可能会过于繁琐(名字太长?),在c++11标准中允许使用底层数据类型去表示枚举值
OC中声明,为了保证他们可以组合使用(下面显然不应该组合)

//下面以二进制表示

//表示方向的枚举
typedef enum direction : int direction;
enum direction : int{
//我们这里有三位枚举选项,所以三位二进制足以表示
left = 1 << 0, //001
right = 1 << 1, //010
top = 1 << 2, //100
bottom = 1 << 3
};


使用

//左上
direction leftTop = left | top;

你可能感兴趣的:(2019-05-25 OC中枚举的使用)