Enum.4: Define operations on enumerations for safe and simple use
Enum.4:為枚舉類型定義運算符以便安全又簡單地使用
Reason(原因)
Convenience of use and avoidance of errors.
方便使用又少犯錯。
Example(示例)
<code>enum Day { mon, tue, wed, thu, fri, sat, sun };
Day& operator++(Day& d)
{
return d = (d == Day::sun) ? Day::mon : static_cast(static_cast /<code>(d)+1);
}
Day today = Day::sat;
Day tomorrow = ++today;
The use of a static_cast is not pretty, but
static_cast的用法不太好,但是:
<code>Day& operator++(Day& d)
{
return d = (d == Day::sun) ? Day::mon : Day{++d}; // error
}/<code>
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
覺得本文有幫助?請分享給更多人。
面向對象開發,面向對象思考!
閱讀更多 面向對象思考 的文章