Bonjour,
Je voudrais savoir en quoi le dynamic_cast est utile si on peut faire du polymorphisme avec la résolution dynamique des liens?
Merci d'avance
Version imprimable
Bonjour,
Je voudrais savoir en quoi le dynamic_cast est utile si on peut faire du polymorphisme avec la résolution dynamique des liens?
Merci d'avance
Bonjour,
Est ce qu'on peut faire un down-casting avec l'opérateur dynamic_cast? C'est à dire peut-on convertir un pointeur de type classe de base en un pointeur de type classe dérivée avec dynamic_cast?
Merci d'avance
Salut,
De manière générale, tu ne devrais jamais avoir recours à dynamic_cast, entre autres, parce que cela implique une violation flagrante de l'OCP (Open/Close Principle ou principe Ouvert / Fermé) : ton code devrait être ouvert aux évolutions (accepter sans broncher que l'on ajoute un nouveau type dérivé, par exemple) mais fermé au modifications (tu ne devrais pas avoir à modifier le code existant et qui a été validé pour arriver à ajouter un nouveau type).
C'est d'autant plus vrai que dynamic_cast n'agit qu'à l'exécution et que seul le résultat du transtypage permet ( du moins, lorsque le résultat est un pointeur) de savoir s'il a réussi ou non.
C'est le but du dynamic_cast. Il retrouve dynamiquement le type exact, et donne une conversion garantie dans le type demandé. Il peut donc même faire du sibling-casting. Pour du up-casting, c'est implicite on n'a besoin d'aucun operateur.
Maintenant comme l'a indiqué @koala01, chercher à retrouver dynamiquement le type exact correspond à une architecture application surement mal posée.