user
Comment instancier une classe en C++ ?
alphonsio

Il existe deux façons d'instancier une classe en C++ :

  • Une instance sur la pile est une variable locale. La mémoire est gérée automatiquement et sera libérée à la fin de sa portée.
// Instanciation sur la pile
maClasse objet;
  • Une instance sur le tas ou instanciation dynamique crée un pointeur stocké sur la pile et une instance de l'objet stockée sur le tas. Lors d'une instanciation dynamique, il ne faut pas oublier de libérer manuellement la mémoire, typiquement avec delete objet;.
// Instanciation dynamique (sur le tas)
maClasse *objet = new maClasse(); 

Sur l'exemple suivant, objet1 est instancié sur la pile. Cette instance est locale à la fonction. La mémoire qu'il occupe sera libérée automatiquement à la fin de la fonction :

void onTheStack() {
    // Instance locale à la fonction
    maCLasse objet1;
    // ...	

} 	// L'instance est détruite à la fin de la fonction

Sur cet exemple, objet2 est instancié dynamiquement. L'instance de cet objet peut être utilisée en dehors de la fonction (à condition de récupérer son pointeur) :

maCLasse* onTheHeap() {
    // Pointeur sur une instance créée dynamiquement
    maClasse *objet2 = new maClasse(); 
    // ...
    // Retourne le pointeur pour une utilisation externe à la fonction
    return object2;
}