Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1157 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [méthode virtuelle]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[méthode virtuelle]

n°759729
Pschitt
Posté le 10-06-2004 à 20:30:18  profilanswer
 

Bonsoir,
 
Je n'arrive pas à expliquer pourquoi le bout de code suivant affiche :
Medecin::trace()
Homme::trace()
 
Si une quelqu'un veut bien m'expliquer la subtilité.
 
code en question :

Code :
  1. class Homme
  2. {
  3.   int age;
  4.   public :
  5.     virtual void trace() const {cout << "Homme::trace()" << endl;}
  6.     virtual ~Homme(){};
  7. };
  8. class Medecin : public Homme
  9. {
  10.   const char *diplome;
  11.   public :
  12.     virtual void trace() const {cout << "Medecin::trace()" << endl;}
  13. };
  14. void f(const Homme& x) { x.trace(); };
  15. void g(const Homme x) { x.trace(); };
  16. void main()
  17. {
  18.   Medecin docteur;
  19.   f(docteur);
  20.   g(docteur);
  21. }

mood
Publicité
Posté le 10-06-2004 à 20:30:18  profilanswer
 

n°759751
blackgodde​ss
vive le troll !
Posté le 10-06-2004 à 20:59:13  profilanswer
 

avec f, l'objet est passé par référence. Aussi c'est la méthode du type véritable de l'objet (Medecin) qui est appelée
 
avec g, l'objet est copié : un objet de type Homme est créé par copie de l'objet Medecin, et c'est donc la méthode de la copie (son type est Homme) qui est appelée


---------------
-( BlackGoddess )-
n°759807
Pschitt
Posté le 10-06-2004 à 21:55:21  profilanswer
 

ça roule
et ça s'appel le polymorphisme si je ne suis pas complétement à coté de la plaque.
 
Au passage, quel est l'intérêt de déclarer la méthode trace (de la classe Medecin), virtuelle, sachant quelle est déjà déclarer ainsi dans la classe parente ?

n°759819
cricri_
Posté le 10-06-2004 à 22:09:22  profilanswer
 

BlackGoddess : suis impressionné ... faut vraiment que je révise/apprenne ...
as-tu des réfèrences/ouvrages à conseiller ?

n°759879
blackgodde​ss
vive le troll !
Posté le 10-06-2004 à 23:15:09  profilanswer
 

le polymorphisme oui me semble
 
l'interet de la déclarer virtuelle, c'est pour ses filles (à Medecin)
 
euh ... pas vraiment d'ouvrage/référence ... c'est sur ce forum que j'ai appris, et compris les mécanismes.
le cours de C. Casteyde m'a aidé aussi.


---------------
-( BlackGoddess )-

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [méthode virtuelle]

 

Sujets relatifs
[JAVA] Comment laisser tourner une méthode en arrière plan ?récupérer une methode PHP 5
le XML, methode merise c dure à assimiler ?méthode qui renvoie tout les attributs d'une classe???
Que pensez vous de cette methode ? (lister les pdf, ps d un dossier)[HTML/JS] Lien sur img - send via methode POST
qqun peut-il m'expliqué a quoi sert une fonction virtuelle?de l'utilité d'une methode release dans un tag jsp.
[JAVA] méthode toStringtemplate , methode virtuelle et inline
Plus de sujets relatifs à : [méthode virtuelle]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR