
Envoyé par
Aizen64
Alp j'ai pas compris un truc là, pourquoi utiliser un pointeur sur la classe de l'objet que l'on veut créer ? Ça devrait suffire nan ?
Classe objet = new Classe();
Attention, tu retombes dans le travers Java ! De deux choses l'une, ou tu instancies directement l'objet (dans la pile), et il sera détruit dès la sortie du bloc :
Ou tu crées un objet persistant dans le tas avec new. Dans ce cas, la commande te renverra son emplacement en mémoire et il te faut un pointeur pour la recevoir. Ensuite, tu devras toi-même libérer la mémoire au moment qui te plaît en faisant un delete de ton objet ... sur son emplacement en mémoire.
Classe * pointeur = new Classe;
Dans ton exemple, tu instancies d'une part un nouvel objet, puis tu essaies de lui affecter un pointeur. Ce n'est pas du même type, ça ne fonctionnera pas.
C'est dangereux parce que s'il venait à l'esprit d'un codeur de déréférencer le pointeur renvoyé par new (truc style Classe objet = * new Classe; ), l'affectation aurait bien lieu, mais les deux objets existeraient en mémoire et il n'y aurait plus moyen de libérer le second.
Partager