Vous pouvez créer un tableau d'objets sur la pile † via:
myarray stackArray[100]; // 100 objects
Et sur le tas † (ou "Freestore"):
myarray* heapArray = new myarray[100];
delete [] heapArray; // when you're done
Mais il est préférable pas gérer la mémoire vous-même. Au lieu de cela, utiliser un std::vector:
#include <vector>
std::vector<myarray> bestArray(100);
Un vecteur est un tableau dynamique, qui (par défaut) alloue des éléments de la pile. ††
Parce que votre classe n'a pas de constructeur par défaut, pour créer sur la pile, vous devez laisser le compilateur savoir quoi passer dans le constructeur:
myarray stackArray[3] = { 1, 2, 3 };
Ou avec un vecteur :
// 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));
Bien sûr, vous pouvez toujours donner un constructeur par défaut:
class myarray
{
int i;
public:
myarray(int a = 0) :
i(a)
{}
};
† Pour les pédants: C++ n'a pas vraiment une "pile" ou "tas"/"Freestore". Ce que nous avons, c'est la "conservation automatique" et la "durée de stockage dynamique". En pratique, cela s'aligne sur l'allocation de pile et l'allocation de tas. Si vous voulez une allocation "dynamique" à partir de la pile, vous devez définir une taille maximale (le stockage de la pile est connu à l'avance), puis attribuer au vecteur un nouvel allocateur afin qu'il utilise la pile à la place.
Est-ce une question de devoirs? Cela ressemble à un. – Amber
Non ... Ce n'est pas une question de devoirs ... Trouvé ceci sur Internet en préparant mon entretien d'embauche .... :) –