IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Différence entre polymorpisme et transtypage dynamique avec dynamic_cast


Sujet :

Langage C++

  1. #1
    Membre actif
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Par défaut Différence entre polymorpisme et transtypage dynamique avec dynamic_cast
    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

  2. #2
    Membre actif
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Par défaut
    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

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    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

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Citation Envoyé par nadia85 Voir le message
    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?
    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.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/12/2016, 16h29
  2. [HTML 5] Ecrans différenciés entre IE et Firefox / écrans avec largeurs en %
    Par rjl dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/06/2012, 00h19
  3. Différence entre les méthodes d'accès avec SSH
    Par L'aigle de Carthage dans le forum Sécurité
    Réponses: 1
    Dernier message: 28/03/2011, 14h08
  4. Réponses: 2
    Dernier message: 21/07/2006, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo