bonjour ,
je suis entrain d'etudier le c++ sur un livre et je suis arrive a l'heritage .
et voila que je me retrouve dans un sous chapitre ou je n'ai presque rien compris << les fonctions virutelles >> .
dans ce code , j'ai pas compris l'interet de mettre virtual dans la classe mere (mammifere) et pourquoi les fonctions ont donne un resultat different , alors que si on enleve virtual les fonctions donnent le meme resultat a savoir utiliser la fonction crier Mammifere .
Voila je compte sur votre aide pour m'expliquer ce qu'il y'a a comprendre sur les fonctions virtuelles parceque cette notion m'a l'air importante et je suis vraiement loin de l'avoir assimile .
Merci de m'avoir lu.
voila le code
Resultat compilation
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 #include<iostream> using namespace std; class Mammifere { public: Mammifere():w_age(1){} ~Mammifere() {} virtual void crier() const {cout<<"les mammiferes ont la parole..."<<endl;} protected: int w_age; }; class Chien : public Mammifere { public: void crier ()const {cout<<" WARFff..."<<endl;} }; void valfonction(Mammifere Mammifere_val) { Mammifere_val.crier(); } void ptrfonction(Mammifere* p_Mammifere) { p_Mammifere->crier(); } int main() { Mammifere *ptr=0; ptr = new Chien; valfonction(*ptr); ptrfonction(ptr); system("PAUSE"); return EXIT_SUCCESS; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 les mammiferes ont la parole... WAARff....
Partager