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 :

Objet d'un type initialisé avec un autre type.


Sujet :

C++

  1. #21
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Donc en indiquant que c'est une voiture on rajoute des caractéristiques,le moteur par exemple.

    Non. Quand on fait
    Code:
    vehicule* ve;
    il n'y a aucun objet pointé par ve.
    Exact.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  2. #22
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    pour utiliser les caractéristiques il faut que tu cast sinon il ne voit que les caractérisitques d'un vehicule mais en revanche il utilise la méthode spécifique liée à la voiture
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  3. #23
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    pour utiliser les caractéristiques il faut que tu cast
    Donc en downcastant on rajoute réelement des caractéristiques.
    On n'accéde pas à des caractéristiques existantes mais "cachées" précedemment.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #24
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    ouaip en gros c ca
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  5. #25
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Non. On ne rajoute rien du tout en downcastant, on se rappelle qu'elles sont présentes. C'est tout.
    (Et encore, à la condition que cela soit downcastable dans le type fils en question.)

    Si A, B, C et D dérivent de M. Que tu as une fonction f qui travaille sur un M. Si dans la fonction tu te dis que si l'objet m est downcastable en un A, alors tu auras accès à des champs propres à A. Tu as tout faux. Parce que tu feras pareil pour B, C, D, et dans six mois pour E et F qui ne sont pas encore définies. Définir des fonctions polymorphes pour ignorer le polymorphisme n'a aucun intérêt. Tu as toutes les chances d'avoir un mauvais design.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #26
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vehicule *ve=new Voiture();
    note qu'il y a un upcasting implicite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Voiture *v=new Voiture();
    Vehicule *ve = static_cast<Vehicule*>( v );
    avec le downcasting tu fais le chemin inverse pour récupérer v (qui a été perdu) à partir de ve.
    note que le cast porte sur le pointeur (dont le type change), mais pas sur l'objet pointé (qui reste toujours le même quel que soient les pointeurs qui le designe).

  7. #27
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    note que le cast porte sur le pointeur (dont le type change), mais pas sur l'objet pointé (qui reste toujours le même quel que soient les pointeurs qui le designe).
    Donc comme le dit Luc Hermitte on a bien accés à des données qui étaient présentes mais "cachées" à cause de la nature du pointeur?
    On ne touche pas à l'objet pointé en "l'agrandissant".
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  8. #28
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    Sa place en mémoire n'est pas modifiée effectivement....
    Si par exemple tu fait un dynamique_cast ça ne va pas réalouer de la mémoire pour 'rajouter' ce qu'il n'y a pas dans une class mere pour en faire une class fille...
    L'intérêt du polymorphisme est justement la....
    Voir par exemple le design patern factorie, la class factorie sait qu'elle va construire des véhicules (pour reprendre l'exemple du début), mais elle ne sais pas ce que c'est qu'un vélo, ou une voiture.... Donc la factorie elle retourne des véhicules, c'est l'utilisateur qui définie dans la factorie quel type de véhicule c'est, vélo, voiture, camion...
    Première grosse démo en construction :
    http://bitbucket.org/rafy/exo2/

  9. #29
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Merci de ces explications.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/04/2019, 18h52
  2. Réponses: 0
    Dernier message: 24/11/2014, 08h52
  3. caster type Object en un autre type
    Par CaptainCyd dans le forum Langage
    Réponses: 4
    Dernier message: 18/09/2007, 14h47
  4. Réponses: 2
    Dernier message: 23/04/2007, 00h41
  5. Connaitre type d'un fichier (<input type="file"..>) avec javascript
    Par goldorax113 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/04/2006, 09h00

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