1. 程式人生 > >C++ enum的使用學習,一些基礎內容的理解

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