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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值