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

标签 c++ arrays pointers dynamic default-constructor

如标题所说,有没有办法用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/

相关文章:

c++ - C++ 中的 n 位 2s 二进制到十进制

c++ - 在 std::cout 刷新事件上捕获和引发事件

arrays - Swift - 在数组中搜索数字模式

python - 计算适用于 numpy 数组,但不适用于 numpy 矩阵

C++ - 添加列表 <Task> l(或任何 STL 容器)作为数据成员导致错误,当删除分配在堆上的任务数组时

c++ - 获取 vtkPoint 数据坐标的顺序指针

c++ - 指向第一个元素的指针的地址

objective-c - 如何在 Objective-C 内联中声明好的旧 C 数组?

在函数内更改指针

c - 使用回调函数指针传递变量