為什么枚舉類優先于普通枚舉?我聽到一些人建議使用枚舉班在C+中,因為它們類型安全.但這到底意味著什么?
3 回答
牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
enum:
enum class埃斯 平原 enums
enum class Color { red, green, blue }; // enum class
enum Animal { dog, cat, bird, human }; // plain enum兩者有什么區別?
enum class枚舉數名稱為 本土化對于枚舉和它們的值 不隱式轉換為其他類型(類似于另一種類型) enum或 int)平原 enums-其中枚舉數名稱與枚舉的作用域相同,它們的值隱式轉換為整數和其他類型。
enum Color { red, green, blue };
// plain enum enum Card { red_card, green_card, yellow_card };
// another plain enum enum class Animal { dog, deer, cat, bird, human };
// enum classenum class Mammal { kangaroo, deer, human };
// another enum classvoid fun() {
// examples of bad use of plain enums:
Color color = Color::red;
Card card = Card::green_card;
int num = color; // no problem
if (color == Card::red_card) // no problem (bad)
cout << "bad" << endl;
if (card == Color::green) // no problem (bad)
cout << "bad" << endl;
// examples of good use of enum classes (safe)
Animal a = Animal::deer;
Mammal m = Mammal::deer;
int num2 = a; // error
if (m == a) // error (good)
cout << "bad" << endl;
if (a == Mammal::deer) // error (good)
cout << "bad" << endl;}結論:
enum class
- 3 回答
- 0 關注
- 1022 瀏覽
添加回答
舉報
0/150
提交
取消
