如标题所说,有没有办法用new创建一个动态大小的对象数组,在这种情况下我不想调用默认构造函数?
类似的东西:
myclass* myarray = new myclass(firstArgument, secondArgument)[32];
最佳答案
最简单的方法是不使用 new
,而是使用 std::vector
,它有一个可以复制构造 vector 元素的构造函数。在大多数情况下,这将是推荐的方式。需要动态分配的数组而不是 vector 的情况非常罕见。
如果您必须使用 new(无论出于何种原因),那么一种方法是分配原始内存,将其转换为您的对象类型,然后使用 std::uninitialized_fill()
就地复制构建您的值(value)观。
关于c++ - 如何在不使用默认构造函数的情况下通过 new 创建动态大小的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235484/