Enum and Euma Class

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++。

猜你喜欢

转载自blog.csdn.net/guanxunmeng8928/article/details/108396811