SORU
20 AĞUSTOS 2013, Salı


Neden numaralama sınıf düz numaralama tercih edilir?

Birkaç kişi numaralandırma kullanmak için tavsiye duydumsınıflaronların yüzünden Ctür güvenliği.

Ama bu gerçekten ne anlama geliyor?

İnsanlar bir şey demesinden nefret ediyorumiyiya da bir şeykötüaçıklamadantam olarakneden böyle şeyler söyler.

Biraz araştırdım ve bu soruya cevap vermek ister bu yüzden StackOverflow üzerinde net bir cevap bulamadım. Bir gün hata ayıklama birinden kurtarır umarım :) Diğer cevapları ve açıklamaları daha söylemek, eğer orada bekliyoruz.

CEVAP
20 AĞUSTOS 2013, Salı


C enum iki tür vardır:

  1. enum classes
  2. Düz enumler

Onlara bildirmek için nasıl burada örnek bir çift vardır:

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

İkisi arasındaki fark nedir?

  • enum classes - numaralandırıcısı isimleryereliçin numaralama ve değerlerideğildolaylı olarak diğer türleri (enum int başka bir gibi) dönüştürün

  • Düz enums - nerede numaralandırıcısı numaralama aynı kapsamda ve onların değerleri örtülü olarak tamsayılar ve diğer tür dönüştürmek

Örnek:

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 class
enum class Mammal { kangaroo, deer, human };        // another enum class

void 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;

}

Sonuç:

11**es hataları neden olabilecek daha az sürprizler sebep oldukları için tercih edilmelidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Candyrat Records

    Candyrat Rec

    10 Mayıs 2006
  • Sali Kaceli

    Sali Kaceli

    24 ŞUBAT 2009
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012