动态分配像int这样的对象数组

时间:2016-04-20 05:22:26

标签: c++ arrays memory dynamic constructor

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

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

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

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

3 个答案:

答案 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