Bonjour,
je suis actuellement en train de suivre un cours C++, et j'ai un petit problème :
je suis arrivé au chapitres concernant la POO et notamment les opérateurs arithmetiques.
tout d'abord dans le .h :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#ifndef DEF_DUREE
#define DEF_DUREE
class Duree
{
public:
Duree(int heures = 0, int minutes = 0, int secondes = 0);
Duree& operator+=(const Duree &duree);
void afficher() const;
private:
int m_heures;
int m_minutes;
int m_secondes;
};
Duree operator+(Duree const& a, Duree const& b);
#endif |
je voudrais comprendre tout ce code. je ne vois pas de différence entre
Duree& operator+=(const Duree &duree);
et
Duree operator+(Duree const& a, Duree const& b);
puis Pareil dans le .cpp :
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
|
#include <iostream>
#include "Duree.h"
using namespace std;
Duree::Duree(int heures, int minutes, int secondes)
: m_heures(heures), m_minutes(minutes), m_secondes(secondes)
{
}
Duree& Duree::operator+=(const Duree &duree2)
{
// 1 : ajout des secondes
m_secondes += duree2.m_secondes; // Exceptionnellement autorisé car même classe
// Si le nombre de secondes dépasse 60, on rajoute des minutes et on met un nombre de secondes inférieur à 60
m_minutes += m_secondes / 60;
m_secondes %= 60;
// 2 : ajout des minutes
m_minutes += duree2.m_minutes;
// Si le nombre de minutes dépasse 60, on rajoute des heures et on met un nombre de minutes inférieur à 60
m_heures += m_minutes / 60;
m_minutes %= 60;
// 3 : ajout des heures
m_heures += duree2.m_heures;
return *this;
}
void Duree::afficher() const
{
cout << m_heures << "h" << m_minutes << "m" << m_secondes << "s" << endl;
}
Duree operator+(Duree const& a, Duree const& b)
{
Duree copie(a);
copie += b;
return copie;
} |
merci d'avance
je commence à apprécier la POO ce serait dommage de s'arêtter là
Partager