При чтении ответов на этот вопрос у меня возникло сомнение относительно построения по умолчанию объектов в векторе. Чтобы проверить это, я написал следующий тестовый код:
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;
}
И конечно же, при создании векторного объекта вызывается конструктор по умолчанию для тестовых структур. Но что я не могу понять, так это как STL инициализирует объекты, которые я создаю, для вектора базового типа данных, такого как вектор целых чисел, поскольку для него есть конструктор по умолчанию? то есть как все целые числа в векторе имеют значение 0? не должно ли это быть мусором?