亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么枚舉類優先于普通枚舉?

為什么枚舉類優先于普通枚舉?

C++
鳳凰求蠱 2019-07-19 10:17:21
為什么枚舉類優先于普通枚舉?我聽到一些人建議使用枚舉班在C+中,因為它們類型安全.但這到底意味著什么?
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

C+有兩種enum:

  1. enum class

    埃斯
  2. 平原

    enums

下面是幾個如何聲明它們的示例:

 enum class Color { red, green, blue }; // enum class
 enum Animal { dog, cat, bird, human }; // plain enum

兩者有什么區別?

  • enum class枚舉數名稱為本土化對于枚舉和它們的值隱式轉換為其他類型(類似于另一種類型)enumint)

  • 平原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 classES應該是首選的,因為它們會帶來更少的可能導致bug的驚喜。


查看完整回答
反對 回復 2019-07-19
  • 3 回答
  • 0 關注
  • 1022 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號