Khi bạn khởi tạo một vector theo cách sau:C++ Tại sao khởi tạo vector gọi là bản sao constructor
std::vector<MyClass> MyVec(10);
Nó kêu gọi các nhà xây dựng mặc định một lần và sau đó gọi các nhà xây dựng bản sao thêm 10 lần. Vì vậy, nếu tôi hiểu nó một cách chính xác, các đối tượng trong vectơ là tất cả được thực hiện bởi các nhà xây dựng bản sao.
Ai đó có thể giải thích lý do gọi cho người tạo bản sao chứ không phải là người mặc định? Hoặc thậm chí chỉ phân bổ bộ nhớ mà không có các đối tượng?
RE cấp phát bộ nhớ mà không cần xây dựng đối tượng: Sau đó, bạn không thể thực sự sử dụng nó. Ngay cả toán tử gán cũng có thể yêu cầu thứ gì đó mà các nhà xây dựng thiết lập. Tất nhiên, chỉ cần đặt trước cũng có thể có ý nghĩa, nhưng nó sẽ có ngữ nghĩa rất khác nhau. – delnan
[Bài kiểm tra của tôi] (http://liveworkspace.org/code/b831cffa5df38a6b12c8a637de815573) cho thấy hàm tạo mặc định được gọi là mười lần. – chris
Hành vi này đã thay đổi trong C++ 11, nơi có thể khởi tạo giá trị của mỗi thành viên. –