为了动态创建int
的数组,我需要int *a = new int[20];
。
是否有类似的方法来创建对象或结构数组?
例如,我需要一个动态分配的class A
对象数组,我该如何声明它(语法)?
在每个对象上调用什么构造函数(如果调用任何构造函数的话)?
答案 0 :(得分:2)
使用带指针的数组:
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];
答案 1 :(得分:1)
您可以使用以下行:
A* a = new A[N];
如何运作?
new
关键字将在堆中分配N
顺序块。每个块的大小为sizeof(A)
,因此总大小(以字节为单位)为N*sizeof(A)
。通过调用默认构造函数N
次来确保在内存中分配这些对象。
<强>替代:强>
请改用std::vector
。它将为您完成所有工作。
答案 2 :(得分:1)
<强>语法(C ++):强>
ClassName * classObject = new ClassName;
例如, 我们假设一个名为car的课程。
car *obj = new car;
car *obj = new car[n]; // n objects will be created by calling the def. constructor