[C++] "typage dynamique" marche pas

"typage dynamique" marche pas [C++] - C++ - Programmation

Marsh Posté le 28-09-2006 à 00:03:50    

'lut
 
Je me demandais pourquoi le type d'écriture suivante ne marchait pas vraiment en C++ alors que c'est ok en Java (par exemple):

Code :
  1. class A {
  2.   public:
  3.     void test();
  4. };
  5. void A::test() {
  6.   cout << "AAAA" << endl;
  7. }
  8. class B : public A {
  9.   ...
  10.   public:
  11.     void test();
  12. };
  13. void B::test() {
  14.   cout << "BBBB" << endl;
  15. }
  16. ...
  17. A *monA;
  18. monA = new B();
  19. monA->test(); // ça m'affiche "AAAA"


 
J'aurais pensé que ce "typage dynamique" aurait fonctionné, j'aurais trouvé ça plutôt intelligent : on a construit l'objet monA avec B(), et à l'appel de la méthode, c'est la méthode de A (super-classe) qui est exécutée alors que j'aurais trouvé logique que ce soit la méthode de B (sous-classe).
 
Y'a-t-il une astuce ? ai-je fait une erreur ? est-ce une spécificité (/faille) du C++ ?
 
Merci d'avance


Message édité par trevor le 28-09-2006 à 00:14:45

---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 28-09-2006 à 00:03:50   

Reply

Marsh Posté le 28-09-2006 à 00:19:02    

virtual :o

Reply

Marsh Posté le 28-09-2006 à 00:25:16    

OK :) C'est le chapitre suivant, je découvre M.C++ au fur et à mesure.
Merci du tuyau ;)


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 17-10-2006 à 22:12:25    

en java les méthodes sont virtuelles si elles ne sont pas spécifiée "final"
en C++ les méthodes sont appelées statiquement si elles ne sont pas spécifiée "virtual"
 
et ce n'est pas un problème de typage dynamique...


Message édité par jesus_christ le 17-10-2006 à 22:13:54
Reply

Marsh Posté le 17-10-2006 à 23:15:01    

et le destructeur virtuel :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed