enum class
在C++中,除了普通的枚举类型(enum),还引入了强类型枚举(enum class)。
enum class
是C++11引入的一种枚举类型,它提供了更严格、更安全的枚举类型定义。相对于普通的枚举类型,enum class
具有以下特点:
- 作用域限定:枚举常量的作用域被限制在
enum class
所在的作用域中,不会污染外部作用域的命名空间。 - 类型安全:
enum class
的类型是强类型的,不会自动转换为整数类型,也不会与其他枚举类型进行隐式比较或赋值。 - 可指定底层类型:可以显式指定枚举的底层类型(默认为int),从而精确控制枚举的宽度和取值范围。
以下是enum class
的基本语法形式:
enum class enumName : underlyingType {
enumerator1,
enumerator2,
...
};
其中,enumName
是枚举类型的名称,underlyingType
是底层类型(如果没有指定,默认为int),enumerator1
、enumerator2
等是枚举常量的名称。
以下是一个使用enum class
的示例:
enum class Color : char {
RED,
BLUE,
GREEN,
YELLOW
};
Color myColor = Color::BLUE;
在上述示例中,我们定义了一个名为Color
的enum class
类型,指定了枚举的底层类型为char。与普通的枚举类型不同,枚举常量的名称还需要通过作用域操作符::
来访问。
enum class
提供了更强大的类型检查,可以避免无意义或错误的枚举值的使用。此外,由于作用域被限定,可以更好地组织和管理枚举常量。
unsigned char
unsigned char
是C++中的一种数据类型,用于表示无符号字符类型。它可以存储0到255之间的整数值,共有256个不同的取值。
char
类型在C++中用于表示字符,它通常是有符号的,即可以表示正数、负数和零。unsigned char
则是无符号的,只能表示非负数(即正数和零)。
以下是unsigned char
的定义和使用示例:
unsigned char myChar = 'A';
unsigned char myNumber = 200;
在上述示例中,第一行声明了一个unsigned char
类型的变量myChar
,并将其初始化为字符字面值’A’的ASCII码值。因为’A’的ASCII码值为65,它在unsigned char
类型范围内,所以是有效的。
第二行声明了另一个unsigned char
类型的变量myNumber
,并将其初始化为整数值200。200在unsigned char
类型的范围内,所以也是有效的。
unsigned char
通常用于存储不需要考虑负数的数据,例如表示像素值、颜色分量、bit掩码等。
需要注意的是,unsigned char
类型在进行数值运算时会发生溢出。例如,unsigned char
类型的最大值是255,如果对其加1,将会变成0。