在将强类型枚举的枚举成员和整形进行比较之前做了强制类型转换。 第11行:输出4,因为强类型枚举的地城类型值默认为int。 第12行:输出1,因为显式制定了该强类型枚举的类型为char。 3. 对原有枚举进行扩展 强类型枚举虽然好用,但它带有浓厚的C++风格,和原有的属于C的枚举不相容。为了配合强类型枚举,C++11对原有...
一、强类型介绍 强类型枚举(Strongly-typed enums),号称枚举类型,是C++11中的新语法,用以解决传统C++枚举类型存在的缺陷。 缺点1:传统C++中枚举常量被暴漏在外层作用域中,这样若是同一作用域下有两个不同的枚举类型,但含有相同的枚举常量也是不可的,比如: enumSide{Right,Left};enumThing{Wrong,Right}; 这是...
1.1强类型枚举概念 在C++中,枚举(enum)是一种常用的数据类型,用于定义一组具有命名值的常量。在旧版本的C++中,枚举的值是隐式转换为整数类型的,这可能导致潜在的错误和混淆。C++11引入了强类型枚举,通过强制枚举类型的名称限定其作用域,避免了隐式转换问题。 1.2示例代码 enum class Color { RED, GREEN, BLUE ...
枚举类(enum)(“强类型枚举”)是强类型的,并且具有类域: enumAlert{green,yellow,election,red};// 传统枚举enumclassColor{red,blue};// 新的具有类域和强类型的枚举类// 它的枚举值在类的外部是不可直接访问的,需加“类名::”// 不会被隐式转换成intenumclassTrafficLight{red,yellow,green};Alert a...
nullptr是一种特殊类型的字面值,它代表一个空指针。相比NULL和,nullptr更为清晰,语义更为明确,可以消除潜在的类型转换问题。三、理解强类型枚举 在C++11之前,枚举类型(Enumerations)存在一些问题。首先,枚举类型的作用域并不限定在枚举类型内部。其次,枚举类型的值可以和整型隐式地转换。这些问题可能引发命名冲突...
和强类型枚举的区别: (1)枚举类型即弱类型枚举(enum):通过定义变量的取值范围避免了设定的固定值因被当作数字或者执行算术运算而改变值导致结果错误。可为枚举成员指定整型值,如果没有给第一个枚举成员赋值,编译器就赋予0,如何没有手动赋值, 编译器会将上一个枚举成员的值递增1,再赋予当前的枚举成员; ...
强类型枚举是 C++11 引入的一种枚举类型,也称为枚举类。与传统的枚举类型相比,强类型枚举提供了更严格的类型检查和更强大的枚举功能。 强类型枚举的转换是指将枚举值转换为其对应的整数值或将整数值转换为枚举值的过程。在 C++ 中,强类型枚举的转换分为两种:隐式转换和显式转换。 隐式转换:强类型枚举的隐式转...
C++ 11引入了一种新的枚举类型,即“枚举类”,又称“强类型枚举”。声明请类型枚举非常简单,只需要在enum后加上使用class或struct。如: enum Old{Yes, No}; // old style enum class New{Yes, No}; // new style enum struct New2{Yes, No}; // new style ...
强类型枚举具有明确的作用域,其枚举名称不会自动超出封闭的作用域,因此在使用时需要使用作用域解析操作符"::"。例如,创建MyEnum枚举时,可以指定枚举值的类型为整型,并通过MyEnum::EnumValue1,MyEnum::EnumValue2等来访问。此外,强类型枚举允许通过自定义基本类型,如将枚举值设置为unsigned long...
强作用域:强类型枚举成员的名称不会被输出到其父作用域空间。 转换限制: 强类型枚举成员的值不可以与整型隐式的互相转换。 可以指定底层类型。默认类型是 int, 但也可以显式的指定类型。type 可以是除wchar_t以外的任何整型。 enumclassType:char{General,Light,Medium,Heavy};来源:https://www.jianshu.com/p...