//
Enum Day{Mon=6,Tus,Wen,Thu,Fri,Sat,Sun} day;//定义对象名 day=Tus;//7 ++day;//8 cout<<day;//8Enum本质是整数型,是一种作用域,c和c++通用
一、什么情况下使用枚举类?
有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便
二、为什么不用静态常量来替代枚举类呢?
static int SEASON_SPRING = 1; static int SEASON_SUMMER = 2; static int SEASON_FALL = 3; static int SEASON_WINTER = 4;枚举类更加直观,类型安全。使用常量会有以下几个缺陷:
1. 类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象。
2. 没有命名空间。开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
union用来在结构体中配合对应的枚举类型.
enum Type{str,num}; union Value{ char* s; int i; } struct Entry{ char* name; Type t; Value v; }; void f(Entry *p) { if(p->t==str) {cout<<p->v.s;} }部分借鉴来自吃羊的鱼的博客添加链接描述,虽然是java,但是也很适用于C++。