2011-11-22 11 views
7
class gene{ 
    int ind; 

    gene() { 
     ind = 0; 
    } 
} 

class network { 
    gene g[10]; 
} 

main() { 
    network n; 
} 

G dizisindeki her nesne için constuctor'u çağırmalı mıyım yoksa otomatik olarak çağrılacak mı? aşağıdaki gibiYapıcı, sınıfın bir üyesi olarak bir dizi nesne için hemen çağrıldı mı?

örneğin, ben ağ sınıfını değiştirmek gerekir: Senin durumunda

class network { 
    gene g[10]; 

    network() { 
     for(int i = 0; i < 10; i++) 
      g[i] = gene(); 
    } 
} 
+2

, paranın üstü bir felaket olacağını: Bunun yerine değer başlatma kullanmak istersiniz. Yapılandırılmamış bir nesnede 'operator =' çağırıyor olmalısınız. –

+2

Ben snarky olmaya çalışmıyorum, ama o zaman soruyu sormaya götürdü, sen, onu test edebilirdin. –

+3

@Steve: Sınama, yalnızca bir derleyicinin davranışını kanıtlayabilirdi; bu, standart tarafından garanti edilen bir şey değil. – ildjarn

cevap

7

gene önemsiz olmayan bir varsayılan kurucu olduğundan, dizinin her bir elemanı varsayılan inşa sizin için olacak. Hayır, senin değişimin gereksizdir.

Dizinin altta yatan türünün bir POD türü olması durumunda, öğelerinin el ile başlatılması gerekir.. Ancak, bunu yaptığınız şey ideal değildir; Zaten inşa edilmediyse

class network { 
    somePodType x[10]; 
public: 
    network() : x() { } 
}; 
İlgili konular