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,
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.
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
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.
Partager