C++核心準(zhǔn)則Enum.4:為枚舉類(lèi)型定義運(yùn)算符以便安全又簡(jiǎn)單地使用

Enum.4: Define operations on enumerations for safe and simple use
Enum.4:為枚舉類(lèi)型定義運(yùn)算符以便安全又簡(jiǎn)單地使用
Reason(原因)
Convenience of use and avoidance of errors.
方便使用又少犯錯(cuò)。
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.
是一個(gè)特別深的遞歸,如果不用cast,使用覆蓋所有情況的switch語(yǔ)句又會(huì)過(guò)于繁雜。
Enforcement(實(shí)施建議)
Flag repeated expressions cast back into an enumeration.
標(biāo)記反復(fù)轉(zhuǎn)換,最后變成枚舉類(lèi)型的表達(dá)式。
原文鏈接:
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#enum4-define-operations-on-enumerations-for-safe-and-simple-use
覺(jué)得本文有幫助?請(qǐng)分享給更多人。
關(guān)注【面向?qū)ο笏伎肌枯p松學(xué)習(xí)每一天!
面向?qū)ο箝_(kāi)發(fā),面向?qū)ο笏伎迹?/span>
評(píng)論
圖片
表情
