C++ 枚举(传统枚举与枚举类)

风陵南·2024-12-12 10:21·44 次阅读

C++ 枚举(传统枚举与枚举类)

枚举

在C++中,枚举(Enumeration)是一种用户定义的数据类型,它由一组命名的整数常量组成。枚举在C++中有几种不同的形式。

传统枚举(Unscoped Enum)#

传统枚举(也称为未作用域枚举)定义如下:

Copy
enum Color {
RED,
GREEN,
BLUE
};

上述例子中,Color是枚举的类型名,REDGREENBLUE是枚举的成员。默认情况下,枚举成员的值从0开始,并依次递增。

特点#

  • 枚举成员的作用域是全局的。
  • 枚举成员可以隐式地转换为整型。
  • 枚举成员可以不显式指定值,如果不指定,则从0开始依次递增。

作用域枚举(Scoped Enum)#

C++ 11 引入了作用域枚举,定义如下:

Copy
enum class Color {
RED,
GREEN,
BLUE
};
// 或
enum struct Color {
RED,
GREEN,
BLUE
};

特点#

  • 枚举成员的作用域是枚举类型内部,必须通过枚举类型来访问。
  • 枚举成员不能隐式转换为整型,必须显式转换。
  • 提供了更好的类型安全。

使用枚举#

  • 传统枚举
Copy
enum Color {
RED,
GREEN,
BLUE
};
Color c = RED;
if (c == RED) {
// do something
}
  • 作用域枚举
Copy
enum class Color {
RED,
GREEN,
BLUE
};
Color c = Color::RED;
if (c == Color::RED) {
// do something
}

显式指定枚举值#

Copy
enum class Color {
RED = 1,
GREEN = 2,
BLUE = 4
};

也可以部分显式指定(未指定的部分会在前一个基础上加一)

Copy
enum class Color {
RED = 2,
GREEN = 4,
BLUE // BLUE = 5
};
posted @   风陵南  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示
目录