Khi đọc câu trả lời cho số question Tôi nghi ngờ về việc xây dựng mặc định các đối tượng trong vectơ. Để kiểm tra nó, tôi đã viết mã kiểm tra sau:Mặc định việc xây dựng các phần tử trong một 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;
}
Và chắc chắn đủ, hàm tạo mặc định của cấu trúc thử nghiệm được gọi khi tạo đối tượng vectơ. Nhưng những gì tôi không thể hiểu là làm thế nào để STL khởi tạo các đối tượng tôi tạo ra một vector của datatype cơ bản như vector của ints kể từ khi có constructor mặc định cho nó? tức là tất cả các int trong vector có giá trị 0 như thế nào? không phải là rác?
Có vẻ như chúng ta có rất nhiều thời gian trong tay, hôm nay :) – xtofl
Đó là niềm vui của cuộc suy thoái :-( –
Tôi không biết điều đó ... Chúng ta gọi int là gì? Chúng tôi không có khởi tạo mặc định cho các loại dữ liệu cơ bản – Canopus