Jeśli mam strukturę z elementem tablicy, a ja jawnie wywołuje domyślny konstruktor tablicy w konstruktorze struktury, czy elementy zostaną ustawione domyślnie? (W przypadku tablicy całkowitoliczbowej oznaczałoby to rozpoczęcie inicjalizacji zerowej).Czy domyślnie skonstruujesz tablicę liczb całkowitych zero, aby ją zainicjować?
struct S
{
S() : array() {}
int array[SIZE];
};
...
S s;
// is s.array zero-initialized?
Szybki test z gcc sugeruje, że jest to przypadek, ale chciałem, aby potwierdzić, że mogę polegać na tym zachowaniu.
(Zauważyłem, że jeśli nie jawnie default-skonstruować tablicę w konstruktorze konstrukcji, elementy tablicy mają wartości losowe.)
Jakiś szczególny powód, dla którego nie używasz 'std :: vector'? – AJG85
@ AJG85: Tak. Jeśli przydzielę tablicę 100000 z tych struktur, chciałbym, aby to spowodowało pojedynczą alokację 100000 * SIZE bajtów, zamiast pojedynczego przydziału 100000 * sizeof (int *) bajtów plus 100000 alokacji SIZE bajtów. (Z drugiej strony, mogę * być * trochę bardziej C++ - y przy użyciu 'boost :: array' (lub' std :: array' w C++ 0x)). – HighCommander4
@High: Twój mentalny model 'std :: vector' jest całkowicie błędny. Ma stały narzut około 12 bajtów plus trochę narzut na wolnym sklepie. –
fredoverflow