枚举型类

枚举型

枚举(enumeration,简称enum),它指定一个值得集合,这些值是符号常量表示,成为枚举量。

例如:

enum Month{

Jan = 1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec

};值以此加1,也可以分别赋值,比较麻烦

如果不赋值第一个枚举量,那么默认从0开始赋值

使用举例:

Month m = feb;//这个表示什么,怎么赋值?

m = 7;//error,int 不能隐式的转换成枚举型

int n = m;//ok,枚举型可以隐式的转换成int型,原因是每个Month枚举型,都有一个int型对应,而反之不成立

Month mm = Month(7);//强制转换,没有经过检查

Month bad = 9999;//error 

我们需要检查,但是枚举没有构造函数,我们自己写一个小的检查函数

Month int_to_Month(int n){

if(n>dec||n<jan)error("Ivalid month');

     return Month(n);

};

void f(int m){

     Month mm = int_to_Month(m);

      return 0;

};

 枚举作用?

用于一组相关命名int型常量的地方,如北,东北,南,东南,西,西北,南,西南等等

枚举类型的作用域?

枚举量的作用域不局限在枚举类型内部,而是与其枚举类型有着相同的作用域,例如:

enum Traffic_sign{red,yellow,green};

int var = red;//note not Traffic_sign ::red;

我们倾向于把枚举型定义在类中,而不是全局变量,以为容易重名,在类中的话,我们可以这样表示枚举量,如Month::jan或者Traffic_sign::red

 

posted @ 2016-01-12 16:43  耀匀  阅读(288)  评论(0编辑  收藏  举报