surcharge de l'operateur+
merci medinoc mais j'avoue que ne comprend pas toujours j'ai besoin d'un peu d'explication car beaucoup de choses sont floues dans ma tete.
l
surcharge de l'operateur+
bonsoir et merci pour les details de la reponse.Cependant j'ai toujours faim.
les cours je les ai lu et relu.
je vais reformuler ma question .
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
|
Duree Duree::operator+(const Duree &duree)
{
int heures = m_heures;
int minutes = m_minutes;
int secondes = m_secondes;
secondes += duree.m_secondes;
minutes += secondes / 60;
secondes %= 60;
minutes += duree.m_minutes;
heures += minutes / 60;
minutes %= 60;
heures += duree.m_heures;
//enfin cette ligne je ne la comprend pas du tout
// Création de l'objet resultat et retour
Duree resultat(heures, minutes, secondes);
return resultat;
} |
1:on considere par exemple
Duree duree1(01,24,32) , duree2(3,45,23).
pour ce qui est de duree1() est ce parce qu'il est en premiere position que je suis dedans ? selon ce que tu as dis
Citation:
Celui que tu appel "duree1" s'appel ici "this" car tu est "dedans" (il y a surement un terme technique pour dire ça...).
Tu peut donc y accéder en faisant: this->m_secondes (car this est un pointeur)
2: dans le prototype de la fonction &duree est mis pour duree1 ou duree2 ?
si dans le code je met
secondes += duree.m_secondes est ce different de
secondes += duree2.m_secondes
merci de repondre à mes questions
surcharge de l'operateur+
Merci 3D Archi je te suis mieux.
Citation:
duree1 et duree2 ne sont connus comme symboles que dans main().
Dans Duree Duree::operator+(const Duree &duree), les variables connues sont this et duree. Lorsque tu fais l'appel duree1 + duree2, le compilateur se charge de faire correspondre this<->duree1 et duree<->duree2 (mécanisme de passage des paramètres).
D'ailleurs, comment ferais-tu pour
Code:
1 2 3 4 5 6 7 8 9 10
|
int main()
{
duree duree1(12,36,45);
duree duree2(4,17,23);
duree resultat = duree1 + duree2;
duree duree3(1,7,12);
duree duree4(0,08,3);
resultat = duree3 + duree4;
} |
ce que je comprend de ce code
c'est que la meme methode operator+ fait addition des duree1 et duree2 et
et de duree3 et duree4
en consequence
dans le premier cas ce sera duree1.operator+ (duree2)
duree1 est alors le this et duree2 le parametre c-a-dire (&duree)
dans l'autre cas
ce sera duree3.operator+(duree4) et stocke cela dans resultat.
la nouvelle valeur de resultat sera alors la somme de duree3 et de duree4
duree3 est le this et duree4 sera passé alors en parametre(&duree).
merci