2013-03-17 29 views
6

Aşağıdaki 2 iki başlatma arasındaki fark nedir? İkinci durumda, nesne olması sağlanır sırasında nesnenin, başlatılmamış bırakılır İlk durumdaC++ Parantez ile ve parantez olmadan sınıf başlatma

class Pod { 
public: 
    int a, b; 
}; 

Pod *p1 = new Pod; 
Pod *p2 = new Pod(); 
+0

JamesMcLaughlin'ın dediği gibi, hiçbir fark yok, ayrıca POD'lar ile sınırlı değil. – MFH

+0

@ DavidRodríguez-dribeas Ne kadar? –

+0

@JamesMcLaughlin: Standart bölümdeki 8.5 bölümünü okuyun :) –

cevap

8

değer başlatıldı bu sıfır başlatıldı anlamına türü olarak bu durumda POD olan,

+1

olmasına rağmen "en can sıkıcı parse" benzer Esas olarak "int" durumunda var olmayan, ilk durumda üyeler, başlatılmamış yerine varsayılan olarak başlatılır. –

+0

@JerryCoffin: Ben daha net olmalıydı Evet, o kısım sebebiyle o * Varsayılan-başlatma * nesne * * –

+1

@ DavidRodríguez-dribeas başlatılmamış bıraktı olduğu anlamına gelir için bir POD olduğunu gerçeğine de geçerli: ... fakat C++ 11'de POD tipleri ile sınırlı değildir (IIRC, tümüyle kopyalanabilir türlerin daha geniş bir kategorisine uygulanmalıdır). –

İlgili konular