instancier class c++
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;
}