C++中的新型枚舉類型定義法

以前C++中的枚舉類型存在很多問題其中之一就是命名沖突,如下所示:

由上圖得知這是兩個獨立的枚舉類型變量,按理說來它們應該有各自的域,而域中即便存在與其他枚舉類型相同的名字也應該不沖突才對啊,但是實際上它就是沖突。現在我們加以驗證來證實這一點。

這回就正常了,這就說明了枚舉類型是不具有域的限制的,所以C++11提出了一種新的枚舉類型,那就是域枚舉類型。現在我在原來的枚舉類型的基礎上加上一個class進行修飾,那這就變成了一個帶有域枚舉類型。在這里還要說明與一般的枚舉類型變量不一樣,域枚舉類型是不存在隱式轉換的,所以你一定要用強制類型轉換。

這是在VS上實驗所得到的結果,其實在C++11標準中域枚舉類型默認的就是整形,C++11標準為了避免各編譯器對枚舉類型實現的差異性采取了統一的標準。你也可以顯式指定枚舉類型的具體默認類型:


不過這個目前在VS上行不通。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容