正如标题所说,有没有办法用new创建一个动态大小的对象数组,在这种情况下我不想调用默认构造函数?
就像是 :
myclass* myarray = new myclass(firstArgument, secondArgument)[32];
正如标题所说,有没有办法用new创建一个动态大小的对象数组,在这种情况下我不想调用默认构造函数?
就像是 :
myclass* myarray = new myclass(firstArgument, secondArgument)[32];
最简单的方法是不使用new
而是使用std::vector
具有可以复制构造向量元素的构造函数的构造函数。在大多数情况下,这将是推荐的方式。需要动态分配的数组而不是向量是非常罕见的情况。
如果您必须使用 new (无论出于何种原因),那么执行此操作的一种方法是分配原始内存,将其转换为您的对象类型,然后用于std::uninitialized_fill()
复制就地构造您的值。
似乎没有办法(或至少是简单的方法)来做到这一点(用新的)。
经过大量搜索,我想出了这个解决方案:
USE VECTOR CLASS
实际上忘记新的,对于您的典型项目,请使用矢量。它有很多好处。
如果您需要一个动态数组,您可以使用向量,这也将让您无需进行内存管理。