SORU
1 Temmuz 2009, ÇARŞAMBA


Varsayılan olarak C yapı 0 başlatılmış üyesi?

struct Bu var:

   struct Snapshot
    {
        double x; 
        int   y ;

    };

x y 0 olmasını istiyorum. Varsayılan olarak 0 olacak ya da yapmak zorundayım:

Snapshot s= {0,0};

Yapısı sıfır diğer yolları nedir?

CEVAP
1 Temmuz 2009, ÇARŞAMBA


Eğer yapı başlatılamıyor musun diye boş değildir.

Snapshot s; // receives no initialization
Snapshot s = {}; // value initializes all members

İkinci tüm üyeleri, ilk belirtilmemiş değerlerinde sıfır bırakır yapar. Özyinelemeli olduğunu unutmayın:

struct Parent { Snapshot s; };
Parent p; // receives no initialization
Parent p = {}; // value initializes all members

İkinci p.s.{x,y} sıfır yapacak. Yapamıyorsanız yapı kurucular varsa bu toplama başlatıcı listeleri kullanın. Eğer durum buysa, o kurucular için uygun initalization eklemek gerekir

struct Snapshot {
    int x;
    double y;
    Snapshot():x(0),y(0) { }
    // other ctors / functions...
};

0 için her iki x ve y başlatılacaktır. Not kullanabileceğiniz x(), y() başlatılamıyor onları hiçe sayarak kendi türü: Bu değer başlatma ve genellikle verimleri uygun bir başlangıç değeri (int için 0, 0.0 çift, arama varsayılan oluşturucu için kullanıcı tanımlı tipler var kullanıcı ilan kurucular, ...). Bu özellikle eğer bir yapı şablonu ise önemlidir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • FullMag

    FullMag

    15 ŞUBAT 2007
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012