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

 C++ Discussion :

Explication de dynamic_cast dans la norme.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut Explication de dynamic_cast dans la norme.
    Bonjour

    Je ne comprends pas les phrases suivantes du § 5.2.7, sur le dynamic_cast

    If, in the most derived object pointed to by v, v points to a public base class suboject of a T object, and if only one object of type T is derived from the sub-object pointed to by v, the result is a pointer to that T object.
    Si par exemple on a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class A{};
    class B: public A{};
    class C: public A{};
    class D: public virtual B, public virtual C{};
     
    D d;
    Dans d, qu'est ce que: "in the most derived object pointed to by v"?
    Je ne comprends pas trop non plus la phrase:
    "and if only one object of type T is derived from the sub-object pointed to by v"

    Pouvez vous me donner un exemple svp?


    Otherwise, if v points to a public base class sub-object of the most derived object, and the type of the most derived object has a base class, of type T, that is unambiguous and public, the result is a pointer to the T sub-object of the most derived object.
    Idem, est-ce possible d'avoir un exemple qui illustre la différence?
    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    Le dynamic_cast, concerne les pointeurs.
    Par exemple tu as une classe A, une classe A_1 et une classe A_2. A_1 et A_2 héritent de A.
    Tu peux donc créer un tableau de pointeur sur A qui contiendras des objets de types A_1 et A_2.
    Cependant si A_1 et A_2 ajoutent de nouvelles méthodes par rapport à A, tu ne pourras y accéder car tu as un tableau d'objet de type A*.
    Si tu connais le type des objets dans ton tableau, c'est à dire que tu sais que A[0] est de type A_1 alors tu peux effectuer un dynamic_cast sur A[0] vers un pointeur de type A_1.

    L'opérateur dynamic_cast permet de vérifier que le cast est bien possible lors de l'exécution du code.
    Si on se réfère au livre de B. Stroustrup : "Un dynalic_cast peut effectuer une conversion d'une classe de base virtuelle polymorphique vers une classe dérivée ou une classe soeur."

    Bref en résumé celà concerne uniquement les pointeurs. Et celà te dit que si un pointeur de type classe mère pointe en réalité sur une classe fille, alors le dynamic_cast sur le pointeur permettra d'obtenir un pointeur du type de la classe fille.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. explication du symbole > dans un code css
    Par maniacs dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 26/06/2008, 22h56
  2. Chercher une valeur dans fichier énorme
    Par randy_dom dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2008, 11h10
  3. Explication pour lire dans la base de registre
    Par davidc dans le forum Débuter
    Réponses: 7
    Dernier message: 09/03/2008, 15h26
  4. Calcul du délai et débit dans la norme 802.11
    Par Kingdomofh dans le forum Développement
    Réponses: 1
    Dernier message: 30/03/2007, 13h35
  5. [Language] Explications classe définie dans une classe
    Par etiennegaloup dans le forum Langage
    Réponses: 6
    Dernier message: 13/09/2005, 22h15

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