值得一看
双11 12
广告
广告

C++的enum是什么?如何定义和使用?

枚举是c++++中一种用户自定义的数据类型,用于将一组整型常量以可读性更强的方式命名,最常见的用途是表示固定选项的状态或类别,默认值从0开始递增,也可手动指定数值,如enum status { success = 0, warning = 5, error }; 定义枚举的基本语法为enum 枚举名 { 值列表 }; 推荐使用enum class来创建作用域枚举,避免命名冲突,如enum class day { monday, tuesday… }; 使用枚举的三大好处包括:1. 替代魔法数字提高代码可读性,例如用day::saturday判断周末;2. 作为状态标识符,如requeststatus表示网络请求状态并配合switch处理不同情况;3. 避免全局变量污染,通过enum class使不同枚举中的相同名称共存;使用时需注意:不要混用不同枚举值,尽量使用enum class提升类型安全,显式设置初始值有助于维护,且c++不支持直接输出枚举名称为字符串,需自行实现映射。

C++的enum是什么?如何定义和使用?

在C++中,enum(枚举)是一种用户自定义的数据类型,它可以让一组整型常量以更具可读性的方式命名。简单来说,它的作用是把数字和名字绑定起来,方便理解和使用。


什么是枚举?

枚举最常见的用途是表示一些有固定选项的状态或类别。比如颜色、星期几、错误码等。

默认情况下,枚举值从0开始递增:

立即学习“C++免费学习笔记(深入)”;

enum Color {
RED,   // 0
GREEN, // 1
BLUE   // 2
};

你也可以手动指定某个值,后面的会继续递增:

enum Status {
SUCCESS = 0,
WARNING = 5,
ERROR    // 这里就是6
};

如何定义一个枚举?

定义一个枚举的基本语法如下:

enum 枚举名 {
值1,
值2,
...
};

还可以加上 class 或 struct 的关键字来创建“作用域枚举”,避免名字冲突:

enum class Day {
Monday,
Tuesday,
Wednesday
};

这样在使用的时候就需要带上作用域:

Day today = Day::Monday;

枚举怎么用?

1. 替代魔法数字,提高代码可读性

比如写一个函数判断今天是否是周末:

enum class Day {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
};
bool isWeekend(Day day) {
return day == Day::Saturday || day == Day::Sunday;
}

比起用数字 5 和 6 来判断,这种写法更容易理解也更安全。

2. 作为状态标识符

在网络请求中,可以用枚举表示不同的状态:

enum class RequestStatus {
Pending,
Success,
Failed
};

然后根据不同状态做处理:

void handleRequest(RequestStatus status) {
switch(status) {
case RequestStatus::Pending:
std::cout << "等待响应..." << std::endl;
break;
case RequestStatus::Success:
std::cout << "成功获取数据" << std::endl;
break;
case RequestStatus::Failed:
std::cout << "请求失败" << std::endl;
break;
}
}

3. 避免全局变量污染(使用 enum class)

普通枚举的值会被“提升”到外层作用域,容易造成重名问题:

enum Color { RED, GREEN };
enum Fruit { RED, APPLE }; // 编译错误:RED重复了

改用 enum class 就可以解决这个问题:

enum class Color { RED, GREEN };
enum class Fruit { RED, APPLE };
Color c = Color::RED;
Fruit f = Fruit::RED;

定义和使用时需要注意什么?

  • 不要混用不同枚举类型的值:即使它们底层都是int,也不建议直接比较或赋值。
  • 尽量使用 enum class:避免命名冲突,提高类型安全性。
  • 显式设置初始值可以增强可维护性:尤其是用于协议或配置时,明确数值有助于排查问题。
  • 不能直接输出枚举名称:C++没有内置方法将枚举值转为字符串,需要自己实现映射。

基本上就这些。enum 在 C++ 中虽然基础,但用好了能大大提升代码的清晰度和安全性。

温馨提示: 本文最后更新于2025-06-09 22:28:33,某些文章具有时效性,若有错误或已失效,请在下方留言或联系易赚网
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容