enum枚举类型作为成员变量

Enum是枚举类型。

定义形式一:

Enum 枚举类型名

{枚举常量1(=0),

枚举常量2(=0),

……

}枚举变量1(,枚举变量2,……);

Enum weekday
{     Monday=0,Tuesday,Wednesday,Thursday,Friday=9,Saturday,Sunday

}today;

Weekday 为枚举类型名,today为枚举变量,大括号里面的Monday,Tuesday等都是枚举常量。其中,Monday为0,Tuesday为1,Wednesday=2,Thursday=3,Saturday=10,Sunday=11.

枚举类型还有另外一种定义形式,即省略类型名。

定义形式二:

Enum

{枚举常量1(=0),

枚举常量2(=0),

……

}枚举变量1(,枚举变量2,……);

 

如Enum

{     Monday=0,Tuesday,Wednesday,Thursday,Friday=9,Saturday,Sunday

}today;

虽然省略了类型名,但C++会自动给该枚举类型取一个类型名,形如__unamed_0000_1。

 

注意:

1.枚举常量的值不允许再修改。因为它是常量。如Monday=4;这是错的。

2.不能用整数给枚举变量赋值。

如today=0;这是错的。因为类型不匹配。应该改为:today=(weekday)0;

但如果枚举类型的定义形式为第二种形式,则today=(weekday)0也是错误的。原因很简单。因为weekday未定义。假设此时,C++给该枚举类型取的类型名为__unnamed_0000_1,那么,today=(__unnamed_0000_1)0;是否正确呢?

答案是否定的。

 

如果枚举类型定义在另一个类的定义中,则枚举变量,枚举常量都可以做为该类的成员变量。但是,枚举类型名是类的静态类型。

#include <iostream>

using namespace std;

class myclass

{

public:

     enum weekday

     {

         monday=0,tuesday=1,wednesday,thursday,friday,saturday,sunday

     }first,second;//枚举类型的第一种定义形式,枚举类型名为weekday。

    

};

int main()

{

     myclass aclass;

     aclass.first=myclass::monday;//枚举常量Monday作为类的成员变量

     aclass.first=myclass::weekday::moday;//编译器警告:warning C4482: 使用了非标准扩展: 限定//名中使用了枚举“myclass::weekday”。不应该采取这种方法。

    aclass.first=(myclass::weekday)0;// 整数赋给枚举变量。但是必须类型转化。适用于枚举变量的//的第一种定义形式。

}

 

调试环境为windowsxp+vs2008

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值