È possibile creare un array di oggetti sullo stack † via:
myarray stackArray[100]; // 100 objects
E sul mucchio † (o "Freestore"):
myarray* heapArray = new myarray[100];
delete [] heapArray; // when you're done
Ma è meglio non gestire la memoria da soli. Invece, utilizzare un std::vector:
#include <vector>
std::vector<myarray> bestArray(100);
Un vettore è un array dinamico, che (per default) alloca elementi dal cumulo. ††
Perché la classe non ha un costruttore di default, per creare in pila è necessario lasciare che il compilatore sa cosa passare al costruttore:
myarray stackArray[3] = { 1, 2, 3 };
O con un vettore :
// C++11:
std::vector<myarray> bestArray{ 1, 2, 3 };
// C++03:
std::vector<myarray> bestArray;
bestArray.push_back(myarray(1));
bestArray.push_back(myarray(2));
bestArray.push_back(myarray(3));
Naturalmente, si può sempre fare un costruttore di default:
class myarray
{
int i;
public:
myarray(int a = 0) :
i(a)
{}
};
† Per i pedanti: C++ non ha veramente un "stack" o "heap"/"Freestore". Quello che abbiamo è la durata di "archiviazione automatica" e "archiviazione dinamica". In pratica, questo si allinea con l'allocazione dello stack e l'allocazione dell'heap.
†† Se si desidera allocare "dinamico" dallo stack, è necessario definire una dimensione massima (lo storage di stack è noto in anticipo), quindi assegnare un nuovo allocatore al vettore in modo che utilizzi lo stack.
Questa è una domanda sui compiti? Sembra uno. – Amber
No ... Questa non è una domanda per i compiti ... Ho trovato questo su internet mentre preparavo per il mio colloquio di lavoro .... :) –