枚举在系统框架中用的很多,优点是可以以一组常量清楚表示某些状态或可组合的选项。比如我们在表示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;
网友评论