前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++核心准则Enum.3:枚举类​要比普通的枚举类型好

C++核心准则Enum.3:枚举类​要比普通的枚举类型好

作者头像
面向对象思考
发布2020-03-25 17:02:43
6340
发布2020-03-25 17:02:43
举报

Enum.3: Prefer class enums over "plain" enums

Enum.3:枚举类要比普通的枚举类型好

Reason(原因)

To minimize surprises: traditional enums convert to int too readily.

尽量减少意外性:经典的枚举类型太容易转换为整数了。

Example(示例)

代码语言:javascript
复制
void Print_color(int color);

enum Web_color { red = 0xFF0000, green = 0x00FF00, blue = 0x0000FF };
enum Product_info { red = 0, purple = 1, blue = 2 };

Web_color webby = Web_color::blue;

// Clearly at least one of these calls is buggy.
Print_color(webby);
Print_color(Product_info::blue);

Instead use an enum class:

而使用枚举类的时候:

代码语言:javascript
复制
void Print_color(int color);

enum class Web_color { red = 0xFF0000, green = 0x00FF00, blue = 0x0000FF };
enum class Product_info { red = 0, purple = 1, blue = 2 };

Web_color webby = Web_color::blue;
Print_color(webby);  // Error: cannot convert Web_color to int.
Print_color(Product_info::red);  // Error: cannot convert Product_info to int.
Enforcement(示例)

(Simple) Warn on any non-class enum definition.

(简单)警告所有枚举类以外的枚举定义。

原文链接:

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#enum3-prefer-class-enums-over-plain-enums


觉得本文有帮助?请分享给更多人。

关注【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面向对象思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Enum.3: Prefer class enums over "plain" enums
  • Reason(原因)
    • Enforcement(示例)
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档