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 ..)
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Merci pour vos conseils
Partager