堆数组中对象的构造函数
Constructor of objects in heap array
所以,我有一个带有构造函数的对象。此对象不支持空构造函数,因为构造函数中必须分配一些常量。像这样:
class Object {
public:
const int foo;
Object(int f) : foo(f) {
// other stuff
}
}
现在我有另一个函数来保存动态分配的对象数组。
Object* objects;
我需要能够使用 new[]
和 delete[]
分配此内存,但也要使用构造函数。我似乎不知道该怎么做。
这样的东西将是理想的
objects = new Object[numObjects];
for (int i = 0; i < numObjects; ++i) {
object[i](foos[i]);
}
我可以使用 malloc
和 free
,然后将对象new
到位,但这并不理想,因为我必须遍历析构函数中的对象并手动销毁它们,然后释放内存。似乎很乱。
您可以使用列表初始化:
objects = new Object[3]{1, 2, 3};
但这仅适用于恒定大小的数组。
我可以使用malloc和free,然后将对象就位
这确实是创建包含非默认可构造类型的对象的动态长度数组的方法。除了代替malloc
,用new[]
分配一个std::byte
数组会更习惯。这也是如何分配要稍后创建的特定数量的对象的数组。
但是没有必要自己写,因为标准库为您提供了 std::vector
,它为您执行此操作:
std::vector<Object> mycars(numObjects, Object(42));
相关文章:
- 对象实例化调用构造函数的次数太多
- Arduino C++在构造函数中用参数声明对象数组
- 模板,函数使用错误的构造函数来复制我的对象
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- 通过构造函数创建的所有对象都具有相同的向量
- 是什么让放置新调用对象的构造函数?
- 复制包含C++所有元素的对象!(构造函数和赋值,最佳实践?
- C++ 对象指针数组的复制构造函数
- 在构造函数中输入对象时C++类成员作用域
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 如何从构造函数副本 T(const T&)调用对象 T?
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- 如何将我编写的对象传递到另一个类的构造函数中?
- 使用向量初始化参数化构造函数的对象数组
- 在C++中将对象从另一个类传递到另一个类的构造函数?
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 构造函数对象赋值是否泄漏内存
- gcc中不可移动构造函数对象的std::函数