Enum and Euma Class

tech2025-03-23  4

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)