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

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