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

共 977字,需浏览 2分钟

 ·

2020-03-14 23:23

9e4a9eb83493b1f333ec629411ccdc78.webp

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

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


Reason(原因)

Convenience of use and avoidance of errors.

方便使用又少犯错。


Example(示例)

enum Day { mon, tue, wed, thu, fri, sat, sun };

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

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

The use of a static_cast is not pretty, but

static_cast的用法不太好,但是:

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




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

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

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


浏览 81
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报