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

  FORUM HardWare.fr
  Programmation
  C++

  question d'héritage et polymorphisme

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

question d'héritage et polymorphisme

n°2103478
in_your_ph​ion
Posté le 27-09-2011 à 10:32:18  profilanswer
 

Bonjour,
Il y a un truc que je ne comprend pas. Pourquoi ceci "passe" :

Code :
  1. class A{
  2. private:
  3. virtual void f() =0 ;
  4. };
  5. class B : public A {
  6. public:
  7. void f() { cout << "B::f()" << endl; };
  8. };


 
i.e. comment ça se fait qu'on peut surcharger une méthode private d'une classe mère en une public ou protected dans une classe fille ?
 
Par ailleurs, est ce que faire une methode 'private' dans une classe mère et la dériver dans les classes filles veut dire que seule une instance de la classe mère pourra appeler cette fonction ?
 
merci ..

mood
Publicité
Posté le 27-09-2011 à 10:32:18  profilanswer
 

n°2103524
theshockwa​ve
I work at a firm named Koslow
Posté le 27-09-2011 à 12:27:57  profilanswer
 

lors de l'héritage, tu peux publier des fonctions.
Garde bien en tête que l'interface conserve le côté privé de sa déclaration :
 

Code :
  1. A* a = new B;
  2. a->f(); // interdit



---------------
last.fm
n°2105280
in_your_ph​ion
Posté le 07-10-2011 à 17:24:19  profilanswer
 

theshockwave a écrit :

lors de l'héritage, tu peux publier des fonctions.
Garde bien en tête que l'interface conserve le côté privé de sa déclaration :
 

Code :
  1. A* a = new B;
  2. a->f(); // interdit




 
 :ouch:  
 
salut, c'est vrai aussi pour autre chose que les interfaces ? Qu'entends tu par "publier" ?

n°2105319
theshockwa​ve
I work at a firm named Koslow
Posté le 08-10-2011 à 00:55:44  profilanswer
 

ta question me donne envie de répondre qu'il n'y a pas de concept d'interface en C++.
 
Par publier, j'entends ca :
 

Code :
  1. class A
  2. {
  3. protected:
  4.   int foo() { return 1; }
  5. };
  6. class B
  7. {
  8. public:
  9.   int bar() { return 2; }
  10. };
  11. class C : public A, public B
  12. {
  13. };
  14. class D : public A, protected B
  15. {
  16. public:
  17.   using A::foo;
  18. };
  19. class E : public A, protected B
  20. {
  21. public:
  22.   using A::foo;
  23.   using B::bar;
  24. };
  25. int main()
  26. {
  27.   C c;
  28.   D d;
  29.   E e;
  30.   C.foo(); // interdit : A::foo est protected
  31.   C.bar();
  32.   D.foo(); // autorisé : méthode publiée
  33.   D.bar(); // interdit : héritage protégé de B
  34.   E.foo(); // autorisé : méthode publiée
  35.   E.bar(); // autorisé : méthode publiée
  36.   return 0
  37. }


---------------
last.fm

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

  question d'héritage et polymorphisme

 

Sujets relatifs
Question Bases de données des banquesQuestion de modélisation
[POO] Héritage vers Base de données relationellepetite question mysql_install_db
[PHP] Question de n00b : comment ça coexiste le PHP et le JavaScript ?question sur les threads
Question pour un portage Win -> OSXbête question: programme pour faciliter l'apprentissage de python
Question sur INSERT INTO[OCAML] question sur un type
Plus de sujets relatifs à : question d'héritage et polymorphisme


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