版本: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型方向去想就好理解多了。