前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++核心准则Enum.4:为枚举类型定义运算符以便安全又简单地使用

C++核心准则Enum.4:为枚举类型定义运算符以便安全又简单地使用

作者头像
面向对象思考
发布2020-03-25 17:03:04
3810
发布2020-03-25 17:03:04
举报
文章被收录于专栏:C++核心准则原文翻译

Enum.4: Define operations on enumerations for safe and simple use

Enum.4:为枚举类型定义运算符以便安全又简单地使用

Reason(原因)

Convenience of use and avoidance of errors.

方便使用又少犯错。

Example(示例)

代码语言:javascript
复制
enum Day { mon, tue, wed, thu, fri, sat, sun };

Day& operator++(Day& d)
{
    return d = (d == Day::sun) ? Day::mon : static_cast<Day>(static_cast<int>(d)+1);
}

Day today = Day::sat;
Day tomorrow = ++today;

The use of a static_cast is not pretty, but

static_cast的用法不太好,但是:

代码语言:javascript
复制
Day& operator++(Day& d)
{
    return d = (d == Day::sun) ? Day::mon : Day{++d};    // error
}

is an infinite recursion, and writing it without a cast, using a switch on all cases is long-winded.

是一个特别深的递归,如果不用cast,使用覆盖所有情况的switch语句又会过于繁杂。

Enforcement(实施建议)

Flag repeated expressions cast back into an enumeration.

标记反复转换,最后变成枚举类型的表达式。

原文链接:

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#enum4-define-operations-on-enumerations-for-safe-and-simple-use


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

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Enum.4: Define operations on enumerations for safe and simple use
  • Reason(原因)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档