Surcharge des Opérateurs ?

Signaler
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003
-
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003
-
Bonjour,

Dans le cadre d'un cours de C++, je dois faire un
exercice pour comprendre la surcharge des opérateurs.

J'ai un bouquin qui traite du sujet, mais cela ne me
suffit pas, si quelqu'un pouvait me guider un peu sur
la compréhension du but recherché lors de la surcharge
des opérateurs, j'apprécierais beaucoup.

Merci d'avance de vos lumières :-)

MiB

4 réponses

Messages postés
100
Date d'inscription
samedi 27 juillet 2002
Statut
Membre
Dernière intervention
11 juin 2003

Le but ca peut etre par exemple, si tu as une classe cube (c'est toujours le meme exemple) de définir comment additionner deux objets cubes en surchargeant l'opérateur +
C'est un exemple, je sais pas si ca répond bien à ta question
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003

Bonjour,

Ce n'est pas très clair pour moi !
Additionner deux objets ???
De façon schématique ...

Est-ce que :

Si : Obj1 tab[0..4] [ 0 , 1 , 0 , 1 , 0 ] Obj2 tab[0..4] [ 0 , 0 , 1 , 1 , 0 ]

Alors :
Obj3 = Obj1 + Obj2
Résultat Obj3 tab[0..4] = [ 0 , 1 , 1 , 1 , 0 ]

où alors Obj3 tab[0..4] [ 0 , 1 , 1 , 2 , 0 ]

Pourquoi dit-on surcharge, parce que l'opérateur agit
sur 2 structures au lieu de 2 variables?

Désolé, si je suis dans le champs, c'est encore très
nouveau ces notions ...

Merci pour ton aide :-)

MiB
Messages postés
100
Date d'inscription
samedi 27 juillet 2002
Statut
Membre
Dernière intervention
11 juin 2003

La surcharge s'applique aux classes si tu as un truc du genre :

class Cube
{
public:
Cube operator+(Cube c2);
// D'autres trucs
int cote;
}

Cube Cube::operator+(Cube c2)
{
Cube r;
r.cote = cote + c2.cote;
return r;
}

maintenant tu peux appeler un truc du style

Cube c1, c2;

c1.cote = 3;
c2.cote = 4;
c1 = c1+c2;

cout << c1.cote;

Tu peux additionner des cubes, c'est plus clair
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003

Ouf!

C'est tout simple en fait!

Définition de la surcharge des opérateurs :
Nous associons à l'opérateur visé une
"façon de faire" de façon à effectuer
l'opération sur un élément de la classe !

// Fichier Bloc.cpp (Projet Cube)
//
#include

using std::cout;
using std::endl;

class Cube
{
public:
Cube();
Cube operator-(Cube c2);
// D'autres trucs

int cote;
};

Cube::Cube()
{
cote=0;
};

Cube Cube::operator-(Cube c2)
{
Cube r;

r.cote=0;

if ( (cote - c2.cote) > 0 )
{
r.cote = cote - c2.cote;
return r;
}
else
{
if ( (c2.cote - cote) > 0 )
{
r.cote = c2.cote - cote;
return r;
}
else return (r);
};
};

int main()
{
Cube c1, c2;

c1.cote = 9;
c2.cote = 3;

cout << "Avant-" << endl;
cout << "c1.cote = " << c1.cote << endl;
cout << "c2.cote = " << c2.cote << endl;

c1 = c1-c2;

cout << "Apr\212s-" << endl;
cout << "c1.cote = " << c1.cote << endl;
cout << "c2.cote = " << c2.cote << endl;

return (0);

}

Merci pour ton aide :-)

MiB