为了动态创建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