动态分配对象数组,如 int

Dynamically allocating array of objects like int

本文关键字:int 数组 对象 动态分配      更新时间:2023-10-16

为了动态创建int数组,我需要做int *a = new int[20];

是否有类似的方法来创建对象或结构数组?

例如,我需要动态分配的class A对象数组,我应该如何声明它(语法)?

每个对象上将调用什么构造函数(如果调用任何构造函数)?

使用带有指针的数组:

A* a = new A [20];

没有指针

A a [20];

我建议使用向量:

//init
std::vector<A> aList;
//reserve memory size - not necessary 
aList.reserve (20);
 //put elements in
 aList.push_back (A ());
 //access elements
 aList [0];
您可以使用

以下行执行此操作:

A* a = new A[N];

它是如何工作的?

new 关键字将在堆中分配N顺序块。每个块的大小为 sizeof(A)因此总大小(以字节为单位)为 N*sizeof(A) 。通过在内存中分配这些对象,可以确保通过调用默认构造函数N次来完成。

另类:

请改用std::vector。它将为您完成所有工作。

语法(c++):

名 *类对象 = 新类名;

例如让我们假设一个名为 car 的类。

car *obj = new car;    
car *obj = new car[n];  // n objects will be created by calling the def. constructor