C++核心準則Enum.3:枚舉類 要比普通的枚舉類型好

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

Enum.3:枚舉類要比普通的枚舉類型好

 

Reason(原因)

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

儘量減少意外性:經典的枚舉類型太容易轉換爲整數了。

 

Example(示例)

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:

而使用枚舉類的時候:

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

 


 

覺得本文有幫助?歡迎點贊並分享給更多的人。

閱讀更多更新文章,請關注微信公衆號【面向對象思考】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章