C++ enum的使用学习,一些基础内容的理解

版本:gcc-4.8.1   语言:C++11

 

说实话我个人在写C++内容的时候很少用到C的知识,比如string,我很少用到char*的写法,在项目里感觉char*这样的写法反而是比较多的。

 

本人现在还在攻克cocos2d-x,最近看了杨冰大大的Lost Soul Aside,对虚幻引擎产生了向往,等过个几个月一定要试试。

 

然后我的博文做了一些调整,如果有比较重要的cocos上的错误,我就分享给大家看看,如果没有就发发自己近期学到的一些知识,比较基础,但是很重要。

 

闲话不多说,直接进入正题,首先让我们来看看enum枚举的使用:

 

定义了一个简单的枚举,就是说家族里的人分为男人、女人、还有小孩。然后打印一下:

 

结果是:

 

嗯,很好理解对吧,就是说初始化第一个元素值为0,然后逐级加1。但是枚举一般是定义在类中的,类中是如何使用的呢?其实也差不多:

 

嘛,就是这样,然后调用的时候,就以Person::family::man的方式来调用就可以了,但是这样有点烦,要多写一个family,我比较懒,然后我就试着去掉了:

 


也是可以的,以Person::man的形式调用就ok了。

 

关于枚举的初始化,方法有挺多的:


 

一个是用枚举的方法,一个直接带数值,数值的这个方法,我试了一下,不一定要枚举中定义的数字,使用Person::family(50)都是可以的,然后他还能像数字一样加减:

 

但是报错了对吧?仔细看一下报错内容,说是int型不能转换成我们的枚举型,那很简单,使用(Person::family)(people_1+ people_2)强制转换一下就OK。

 

学到这里我有个感悟,这枚举内部就是int型吧?为了实验一下,我就这么玩了:


 

没错,输出的就是1,也就是true,没想到是相等的啊。。。

 

然后sizeof测试,输出也就是4个字节。

 

总结:

enum的内部实现就是int型,什么事情都往int型方向去想就好理解多了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值