enum class:枚举值不会隐式转换为其底层类型,需要显式转换为底层类型,它们与整数类型之间没有隐式的比较操作。 3. 底层类型的指定: enum:底层类型可以是int、unsigned int、char等整数类型,默认情况下是int。 enum class:底层类型可以是任何整数类型,包括枚举类本身不具备的类型(例如long、unsigned long long等)。
在C++中,枚举类型分为不限定作用域(enum)和限定作用域(enum class)。 2. enum与enum class的区别? (为什么需要限定作用域?) 答:枚举作用域是指枚举类型成员名字的作用域,起自其声明之处,终止枚举定义结束之处。enum与class enum区别在于是否限定其作用域。C语言规定,枚举类型(enum)的成员的可见范围被提升至该...
enum class:枚举值的名称在枚举类的作用域内是局部的,不会与其他作用域中的名称冲突。 2. 隐式转换: enum:枚举值可以隐式转换为其底层类型(通常是整数类型),并且可以与整数类型进行比较。 enum class:枚举值不会隐式转换为其底层类型,需要显式转换为底层类型,它们与整数类型之间没有隐式的比较操作。 3. 底层...
}gender_t;//重定义类型enum gender 为gender_t, 命名习惯加_t,一看就是typedef重定义类型 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一 个枚举元素的值为 0,第二个为 1,依次顺序加 1 二enum class 限定作用域 enumclassGender { MAN, WOMAN, UNKNOW };Gendergender=Gender::MAN;/...
enum class Traffic_light{red, yellow, green}; 枚举常用一些整数类型表示,每个枚举值是一个整数。我们把用于表示某个枚举的类型称为它的基础类型。基础类型默认是int,我们可以显示的指定: enum class Traffic_light : int {red, yellow, green}; 默认情况下,枚举值从0开始,依次递增。
知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、
C++枚举类型enum与enumclass的使用 C++枚举类型enum与enumclass的使⽤ ⼀.关于枚举类型 1. 什么是枚举类型?答:如果⼀个变量只有⼏种可能的值,那么就可以定义为枚举类型,⽐如:性别只有男和⼥,那么就可以将性别定义为⼀种枚举类型,其中男和⼥就是性别所包含的变量。所谓”枚举”是指将变量的值⼀...
答:枚举作用域是指枚举类型成员名字的作用域,起自其声明之处,终止枚举定义结束之处。enum与class enum区别在于是否限定其作用域。C语言规定,枚举类型(enum)的成员的可见范围被提升至该枚举类型所在的作用域内。这被认为有可能污染了外部的作用域,为此,C++11引入了枚举类(enum class)解决此问题。
前者元素的作用域同枚举类型,后者元素的作用域在枚举类型里,参见《C++程序设计精要教程》,这是C+十...
1 enum class 和 enum struct 是等价的 1. 旧版enum存在的问题 1.1 问题1:向整形的隐式转换 在开始这个问题之前,我们需要知道什么是整形提升 查看之前的博文:C\C++中的整形提升 在看完什么是整形提升之后,我们开始这个问题: 旧版enum其实并不具有非常完全的类型安全(当然它也体现了一定的类型安全:1.禁止不同...