Tôi đã tìm kiếm nhưng không thể tìm thấy câu trả lời cho điều này. Có cách nào để thông báo cho nhà điều hành new
về số không gọi số nhà thầu lớp học không?C++ uninitialized mảng của trường hợp lớp
MyObject* array = new MyObject[1000];
Điều này sẽ gọi MyObject()
một nghìn lần! Tôi muốn tự điền vào bộ nhớ được cấp phát và không cần bất kỳ thông tin nào được khởi tạo trong hàm tạo. Sử dụng malloc()
không phải là rất hài hòa mã C++ imho.
MyObject* array = (MyObject*) malloc(sizeof(MyObject) * 1000);
Cảm ơn câu trả lời của bạn. Bất kỳ nhược điểm nào của việc sử dụng kiểu đúc kiểu C trên 'static_cast'? Cú pháp xây dựng là mới đối với tôi. Tốc độ là chìa khóa, tôi không nghĩ rằng phù hợp với bản đồ vì tôi thực sự cần một mảng tuyến tính của một số cố định của các yếu tố. –
@Niklas Trong trường hợp này, không có bất lợi nào. Dàn diễn viên kiểu C được định nghĩa là tập đầu tiên của một bộ phôi sẽ thành công. Trong trường hợp này, nó sẽ tương đương với 'static_cast'. Tuy nhiên, tôi thích được rõ ràng hơn. Ngoài ra, có rất nhiều thông tin về Stack Overflow về cú pháp mới của vị trí. –
@NiklasR Chỉ cần đảm bảo: bạn có muốn tạo các đối tượng tuần tự (bắt đầu từ chỉ mục 0 trở lên) hoặc tại các vị trí tùy ý trong mảng không? Nếu bạn muốn chúng tuần tự, thì câu trả lời 'std :: vector' của slow là thích hợp. –