枚举型
枚举(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
原文:http://www.cnblogs.com/xyy-comeon/p/5124837.html