Al leer las respuestas a este question, tengo una duda con respecto a la construcción predeterminada de los objetos en el vector. Para probar que escribí el siguiente código de prueba:Construcción predeterminada de elementos en un vector
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;
}
y, efectivamente, la estructuras de prueba por defecto se llama al constructor al crear el objeto vectorial. Pero lo que no puedo entender es ¿cómo inicializa el STL los objetos que creo un vector de tipo de datos básico como el vector de ints ya que hay un constructor predeterminado para él? es decir, ¿cómo todas las entradas en el vector tienen valor 0? ¿No debería ser basura?
Parece que tenemos una gran cantidad de tiempo en las manos, hoy :) – xtofl
Esa es la alegría de la recesión :-( –
que no sabía que .. Bueno, ¿qué es lo que llamamos int() como? Una vez más ¿por qué no tenemos inicializadores predeterminados para los tipos de datos básicos. – Canopus