• [^] # Re: Comment ça marche ?

    Posté par . En réponse à la dépêche Al Stevens n'aime pas QT. Évalué à 8.

    >c'est fait automatiquement par QApplication

    comment ça se passe tout ça ?


    C'est surtout faux, ou très mal exprimé. Ce n'est pas QApplication qui gère cela mais QObject.

    En fait, quand tu instancies un QObject (qui est la classe ancêtre de toutes les autres classes Qt, ou presque), tu fournis en premier paramètre un QObject * parent=0.

    Dans le constructeur de QObject, si le *parent est renseigné, alors le parent va être informé qu'il a un "fils" et il va l'ajouter dans une liste.

    Lorsqu'un objet d'une classe dérivée de QObject est désinstanciée avec un delete, le destructeur va parcourir la liste de tous les objets fils afin de faire un delete sur chacun d'entre eux.

    2 remarques :

    * Pourquoi critiquer ce fonctionnement ? Lorsqu'on supprime un père, il faut bien supprimer les fils non ? Alors pourquoi se plaindre du fait que le codeur n'ai pas besoin de pisser systématiquement ces lignes de codes ?

    * Si tu t'amuses à instancier tes object sans fournir de *parent , tu auras la joie de devoir tout désinstancier à la main et d'écrire des lignes de codes inutiles...