在閱讀此question的答案時,我對向量中對象的默認構造有疑問。爲了測試它,我寫了下面的測試代碼:向量中元素的默認構造
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是如何初始化對象的,我創建了一個基本數據類型的向量,例如int整型向量,因爲它有默認的構造函數。即矢量中的所有整數如何具有值0?它不應該是垃圾嗎?
我們似乎已經在手了大量的時間,今天:) – xtofl 2009-05-18 13:21:33