1.Enum
Enum Day{
Mon=1,Tus,Wen,Thu,Fri,Sat,Sun};//Day 枚举名(域名)
Enum Day day;//Day的对象名
day=mon;//day=1;
++day;//1+1
cout<<day<<endl;//cout 2
//
Enum Day{
Mon=6,Tus,Wen,Thu,Fri,Sat,Sun} day;//定义对象名
day=Tus;//7
++day;//8
cout<<day;//8
Enum本质是整数型,是一种作用域,c和c++通用
2.Enum Class
一、什么情况下使用枚举类?
有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便
二、为什么不用静态常量来替代枚举类呢?
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_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
3.Enum Class 与union
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++。