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



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;
}
Resultat compilation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
les mammiferes ont la parole...
WAARff....