C++ 匿名枚舉

在定義枚舉的同時聲明變量,如果不需要在以後聲明這種類型的其他變量,就可以省略枚舉類型。

enum有個很“奇怪”的設定,就是具名的enum類型的名字,以及enum的成員的名字都是全局可見的。這與C++中具名的namespace、class/struct及union必須通過"名字::成員名"的方式訪問相比是格格不入的(namespace等被稱爲強作用域類型,而enum則是非強作用域類型)。

enum class是強類型作用域的 。

枚舉成員會自動轉換爲int類型。枚舉不佔用任何空間並且是不可變的。

另外,當在一個類中聲明一個常量字段時,它必須是static const (對現代C ++來說不是這樣),並不是所有的編譯器都支持靜態const成員的內聯初始化。

這是用於聲明編譯時整數常量的所謂枚舉技巧。它的優點是保證沒有變量被實例化,因此沒有運行時間的開銷。大多數編譯器不會引入整型常量的開銷。

標準規定,C++枚舉所基於的“基礎類型”是由編譯器來具體指定實現的,這導致枚舉類型成員的基本類型的不確定性問題(尤其是符號性)。

https://www.jianshu.com/p/823b41e8dbe7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章