Polymorphisme Lien dynamique
Bonjour,
Je souhaiterais faire du polymorphisme avec liens dynamique.
Après un gros débat avec un collègue de stage nous en sommes arrivé à ce résultat (mini programme de test/intro ..)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
#include <iostream>
using namespace std;
class vehicule {
protected:
int roues;
public:
vehicule(int r) : roues(r) {}
~vehicule();
virtual int get_roues()=0;
int print_nb_roues(){
this->get_roues();
}
};
class voiture: public vehicule {
public:
voiture(int r) : vehicule(r) {}
~voiture();
int get_roues() {
return roues;
}
};
class moto: public vehicule {
public:
moto(int r) : vehicule(r) {}
~moto();
int get_roues(){
return roues;
}
};
int get_nb_roues(vehicule &v)
{
v.print_nb_roues();
}
int main() {
vehicule * v1 = new moto(2);
vehicule * v2 = new voiture(4);
cout << "Le vehicule v1 a :" << get_nb_roues(*v1) << endl; // prints !!!Hello World!!!
cout << "Le vehicule v2 a :" << v2->print_nb_roues() << endl;
return 0;
} |
Or perso je ne suis pas d’accord car je pense que le destructeur doit être virtuel et je ne vois pas l’intérêt implémenter une fonction print_nb_roues() dans la classe mère.
Merci pour vos conseils