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

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • Blunty

    Blunty

    13 Mart 2006
  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005