SORU
6 Mart 2009, Cuma


Tür adından sonra parantez içinde yeni bir fark yaratır mı?

'Sıradan bir sınıf' arasında bir fark vardır: . Test ederseniz

Test* test = new Test;
//and
Test* test = new Test();

CEVAP
6 Mart 2009, Cuma


Hadi aslında kodunuzu davranışlarını etkileyen farklılıklar vardır çünkü ukala. Aşağıdaki çok yorum "Old New Thing" article yapılan alınır.

Bazen hafıza döndürülen yeni operatör olacak başlatıldı, ve bazen yaramaz olmasına bağlı olarak bir tipsin newing bir POD (plain old data), ya da eğer bir sınıf içeren POD üyeleri ve kullanarak bir derleyici tarafından oluşturulan varsayılan kurucu.

  • Başlatma 2 tipi vardır C 1998: varsayılan sıfır
  • C 2003 3 başlatma türü, değeri başlatma eklendi.

Varsayalım:

struct A { int m; }; // POD
struct B { ~B(); int m; }; // non-POD, compiler generated default ctor
struct C { C() : m() {}; ~C(); int m; }; // non-POD, default-initialising m

C 98 derleyici, aşağıdaki ortaya:

  • yeni A - belirsiz değer
  • () yeni Bir - -başlatılamıyor sıfır

  • yeni B - varsayılan inşa (:: B m başlatılmamış)

  • () yeni B - inşa varsayılan (:: B m başlatılmamış)

  • yeni C - varsayılan inşa (:: C m sıfır başlatıldı)

  • () yeni C - inşa varsayılan (:: C m sıfır başlatıldı)

C 03 uyumlu bir derleyici, her şey çok gibi çalışması gerekir:

  • yeni A - belirsiz değer
  • () yeni Bir değer başlatma bir BÖLME olduğu için sıfır başlatma olan,.

  • yeni B - varsayılan-başlatır (yapraklar B::m) başlatılmamış

  • () yeni B varsayılan decimal kullanıcı tanımlı olarak karşı oluşturulan derleyici olduğundan başlatır sıfır tüm alanları olan değer B başlatır.

  • yeni C - varsayılan-varsayılan başlatır decimal aranmasına, C,.

  • () yeni bir C - değeri-başlatır varsayılan decimal. çağıran C,

C tüm sürümleri "new A" ve "new A() çünkü" POD. arasında fark var yani

Ve dava için C 98 ve C 03 davranış arasında bir fark "new B()".

Bu deli sürücü C tozlu köşelerinden biri. Bir nesne oluştururken, bazen parens gerek/seni istiyorum, bazen, kesinlikle onları, bazen de bir önemi yok.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006
  • super1988guy

    super1988guy

    9 Aralık 2007
  • TomKNJ

    TomKNJ

    26 ŞUBAT 2007