21xrx.com
2024-11-05 21:33:52 Tuesday
登录
文章检索 我的文章 写文章
C++枚举类初值设定
2023-06-26 17:27:36 深夜i     --     --
C++ enumeration initialization

枚举类(enum class)是C++11中新增的特性,用于定义一组有限的、命名的整数常量。与传统的枚举类型相比,枚举类提供了更严格的类型检查和更好的可读性,但在初值设定方面也有一些不同之处。

在C++中,传统的枚举类型使用以下语法定义:


enum Color

  BLUE

;

其中,RED、GREEN和BLUE是枚举常量,它们自动分别被赋值为0、1和2。可以手动指定枚举常量的值,例如:


enum Color

  RED = 1;

这样就将RED的值设置为1,GREEN的值设置为2,BLUE的值设置为4。但传统枚举类型有一个重要的问题,就是它们的常量名在同一作用域中会被重复定义。例如:


enum Color

  RED;

enum TrafficLight

  GREEN

;

这里定义了两个不同的枚举类型,但它们都有一个常量名为RED,这会引发命名冲突的问题。

为了解决这个问题,C++11引入了枚举类。枚举类使用以下语法定义:


enum class Color

  BLUE

;

其中,enum class是关键字,Color是枚举类的名称。枚举常量的定义方式与传统的枚举类型基本相同,但它们的作用域被限制在枚举类内部,不会与其他枚举类或变量发生命名冲突。

在枚举类中,可以像枚举类型一样手动指定枚举常量的值,例如:


enum class Color

  RED = 1;

这段代码将枚举常量的值设置为1、2和4,与传统枚举类型相同。但如果不手动指定枚举常量的值,则会使用默认的规则赋值。与传统枚举类型不同的是,枚举常量的默认值是无符号整数类型,在编译时自动推导其宽度,且默认起始值为0。因此,以下两行代码等效:


enum class Color

  RED;

enum class Color

  GREEN;

如果想自定义枚举常量的起始值,可以手动指定第一个枚举常量的值,例如:


enum class Color

  BLUE

;

这样就将RED的值设置为1,GREEN的值设置为2,BLUE的值设置为3。需要注意的是,枚举常量的值必须是常量表达式,不能使用变量、函数等。

总之,枚举类是C++11中新增的一个特性,用于定义一组有限的、命名的整数常量。枚举类不仅提供了更严格的类型检查和更好的可读性,还解决了传统枚举类型中常量名重复的问题。在初值设定方面,可以手动指定枚举常量的值,也可以使用默认规则或自定义起始值。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复