Durante la lettura delle risposte a questo question ho avuto un dubbio sulla costruzione predefinita degli oggetti nel vettore. Per provarlo Ho scritto il seguente codice di prova:Costruzione predefinita di elementi in un vettore
struct Test
{
int m_n;
Test();
Test(const Test& t);
Test& operator=(const Test& t);
};
Test::Test() : m_n(0)
{
}
Test::Test(const Test& t)
{
m_n = t.m_n;
}
Test& Test::operator =(const Test& t)
{
m_n = t.m_n;
return *this;
}
int main(int argc,char *argv[])
{
std::vector<Test> a(10);
for(int i = 0; i < a.size(); ++i)
{
cout<<a[i].m_n<<"\n";
}
return 0;
}
E infatti, il costruttore di default le strutture di prova è chiamato durante la creazione dell'oggetto vettoriale. Ma ciò che non sono in grado di capire è come fa l'STL a inizializzare gli oggetti che creo un vettore di tipo di dati di base come il vettore di int che esiste per il costruttore predefinito? cioè, come tutti gli interi del vettore hanno valore 0? non dovrebbe essere spazzatura?
Sembra che abbiamo un sacco di tempo a mano, oggi :) – xtofl
Questo è la gioia della recessione :-( –
non sapevo che .. Beh quello che chiamiamo int() come? Poi di nuovo perchè non abbiamo inizializzatori di default per i tipi di dati di base – Canopus