Surcharge des Opérateurs ?

MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003 - 17 févr. 2003 à 16:00
MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003 - 18 févr. 2003 à 01:25
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

cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003
17 févr. 2003 à 16:08
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
0
MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003
17 févr. 2003 à 17:57
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
0
cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003
17 févr. 2003 à 19:58
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
0
MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003
18 févr. 2003 à 01:25
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
0
Rejoignez-nous