C++枚举类型

C枚举类型 enum,没有限定作用域。C++11中引入了限定作用域的枚举类型enum class(与enum struct 等价)。

  • 在相同作用域中,enum枚举成员名不可重复,即
{
	enum enum1 {yellow, red};
	enum enum2 {yellow, blue}; 
	enum1 e = yellow; //必须使用该种赋值方式。
}

报错

In function 'int main()':
58:13: error: 'yellow' conflicts with a previous declaration
  enum enum2{yellow, blue};
             ^~~~~~
57:16: note: previous declaration 'main()::enum1 yellow'
     enum enum1{yellow, red};
  • enum class 可以重复,即:
{
    enum class enum1 {yellow, red};
	enum class enum2 {yellow, blue};  
	enum1 e = enum1::yellow;//使用该种赋值方式,注意与enum比较
}

编译通过正常运行。

  • 枚举成员默认类型为int,可指定枚举成员类型:
{
    enum class enum1 : unsigned int {yellow = 1, red};
	enum  enum2: char {yellow = 3, blue = 5};  
}
  • enum成员支持隐式转换,enum class不支持,因为enum class与class相同,定义了一种新的类型
//编译通过
char t = yellow;
//error: cannot convert 'main()::enum1' to 'unsigned int' in initialization
unsigned int t2 = enum1::yellow;
  • 枚举类型的前置声明,enum必须指定类型
    enum class enum1;
	enum enum2:int;
	//error: use of enum 'enum3' without previous declaration
	enum enum3;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值