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 : 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;
}
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