Beim Lesen der Antworten auf diese question bekam ich einen Zweifel bezüglich der Standard-Konstruktion der Objekte im Vektor. Um es zu testen, schrieb ich den folgenden Testcode:Standard-Konstruktion von Elementen in einem Vektor
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;
}
Und tatsächlich wird der Standardkonstruktor der Teststrukturen beim Erstellen des Vektorobjekts aufgerufen. Aber was ich nicht verstehen kann, ist, wie die STL die Objekte initialisiert, die ich einen Vektor des grundlegenden Datentyps wie Vektor von Ints verursache, da es Standardkonstruktor dafür gibt? h. wie haben alle Eingänge im Vektor den Wert 0? sollte es nicht Müll sein?
Wir scheinen viel Zeit an den Händen zu haben, heute :) – xtofl
, dass die Freude der Rezession ist :-( –
ich nicht kannte .. Nun, was nennen wir int(), wie? Dann wieder, warum nicht Wir haben Standardinitialisierer für Basisdatentypen – Canopus