枚举enum

枚举类型enum

C++中,枚举类型(enumeration) 是一个被命名的整型常量的集合。和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。C++包含两种枚举:限定作用域的和不限定作用域的。

限定作用域的枚举类型

限定作用域的枚举类型(scoped enumeration)定义形式如下:

enum class open_modes {input, output, append};

首先是关键字enum class(或者是等价的使用enum struct),随后是枚举类型名字以及用花括号括起来的以逗号分隔的枚举成员(enumerator),最后加上分号。上面的函数定义了一个名为open_modes的枚举类型,它包含三个枚举成员:input、output、append。

不限定作用域的枚举类型

不限定作用域的枚举类型(unscoped enumeration)定义时省略掉关键字class(或struct),枚举类型的名字是可选的,如果enum是未命名的,则我们只能在定义该enum时定义它的对象。

enum color {red, yellow, green};	//不限定作用域的枚举类型
enmu {floatPrec = 6, doublePrec = 10, double_doublePrec = 10}; 	//未命名的、不限定作用域的枚举类型

枚举成员

作用域

在限定作用域的枚举类型中,枚举成员遵循常规的作用域准则,并且在枚举类型的作用域外是不可访问的。与之相反,在不限定作用域的枚举类型中,枚举成员的作用域与枚举本身的作用域相同:

enum color {red, yellow, green};			//正确,不限定作用域的枚举类型
enum stoplight {red, yellow, green};		//错误,重复定义了枚举成员
enum class peppers {red, yellow, green};	//正确,枚举成员被隐藏了
color eyes = green;							//正确,不限定作用域的枚举类型的枚举成员位于有效的作用域中
peppers p = green;							//错误,peppers的枚举成员不在有效的作用域中,color::green在有效的作用域中,但是类型错误
color hair = color::red;					//正确,允许显示的访问枚举成员
peppers p2 = peppers::red;					//正确,使用peppers的red
枚举值

默认情况下,枚举值从0开始,依次加1。不过我们也能为一个或几个枚举成员指定专门的值,并且枚举值不一定唯一。

enum class intTypes {
    charTyp = 8, shortTyp = 16, intTyp = 16, longTyp = 32, long_longTyp = 64
};

枚举成员是const,因此在初始化枚举成员时提供的初始值必须是常量表达式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值