如何在不使用默认构造函数的情况下通过new创建动态大小的对象数组?

时间:2013-08-14 15:10:25

标签: c++ arrays pointers dynamic default-constructor

正如标题所说,有没有办法用new创建一个动态大小的对象数组,这个条件我不想调用默认的构造函数?

类似的东西:

myclass* myarray = new myclass(firstArgument, secondArgument)[32]; 

3 个答案:

答案 0 :(得分:1)

最简单的方法是不使用new,而是使用std::vector,它具有可以复制构造向量元素的构造函数。在大多数情况下,这将是推荐的方式。需要动态分配的数组而不是向量是一种非常罕见的情况。

如果 使用new(无论出于何种原因),那么一种方法是分配原始内存,将其转换为对象类型,然后使用std::uninitialized_fill()复制就地建立你的价值观。

答案 1 :(得分:0)

如果你需要一个动态数组,你可以使用vector,这也将取消你的内存管理。

vector c++ reference

答案 2 :(得分:0)

似乎没有办法(或至少简单的方法)做到这一点(新的)。

经过大量搜索后,我想出了这个解决方案:

 USE VECTOR CLASS

实际上忘了新的和你的典型项目,使用矢量。它有很多好处。