En lisant les réponses à cette question j'ai eu un doute concernant la construction par défaut des objets dans le vecteur. Pour le tester, j'ai écrit le code de test suivant:Construction par défaut des éléments dans un vecteur
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;
}
Et bien sûr, le test struct constructeur par défaut est appelé lors de la création de l'objet vectoriel. Mais ce que je ne suis pas capable de comprendre est comment la STL initialise les objets que je crée un vecteur de type de données de base tel que le vecteur d'ints puisqu'il y a un constructeur par défaut pour cela? c'est-à-dire, comment toutes les valeurs du vecteur ont-elles la valeur 0? Ne devrait-il pas être une poubelle?
Il semble y avoir beaucoup de temps à la main, aujourd'hui :) – xtofl
C'est la joie de la récession :-( –
Je ne savais pas que .. Eh bien qu'est-ce que nous appelons int() comme? Et puis pourquoi ne pas Nous avons des initialiseurs par défaut pour les types de données de base – Canopus