在阅读这个问题的答案时,我对向量中对象的默认构造产生了疑问。为了测试它,我编写了以下测试代码:
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;
}
果然,在创建向量对象时调用了 Test structs 默认构造函数。但我无法理解的是 STL 如何初始化我创建基本数据类型向量的对象,例如整数向量,因为它有默认构造函数?即向量中的所有整数如何具有值0?不应该是垃圾吗?