Exood4 Studio - Video Game Development, Toulouse (France)
Exood4 Studios Exood4 Tutorials

   
L a n g a g e   C++

S u r c h a r g e    d ' o p r a t e u r s






Le principe de surcharge


 La surcharge des oprateurs consiste dfinir le comportement d'un oprateur appliqu un objet. On ne peut pas changer la pluralit des oprateurs, ni leur priorit (voir priorit des oprateurs en C)



Le mcanisme de surcharge des oprateurs


 Notation : operator op() (op tant le symbole de l'oprateur surcharger)


Exemple : * produit scalaire de 2 points, + addition de 2 points

class point
{
private :
 float abscisse, ordonnee;

public :
 point();
 point(float,float);

 void afficher ();

 point operator + (point);
 float operator * (point);
};

point point::operator +(point p)
{
 point resultat;

 resultat.abscisse = abscisse + p.abscisse;
 resultat.ordonnee = ordonnee + p.ordonnee;

 return resultat;
}

float point::operator *(point p)
{
 return (abscisse * p.abscisse + ordonnee * p.ordonnee);
}

Exemple de programme client :

void main ()
{
 point a(2.0, 3.0), b(1.0, 2.0), c;

 c = a + b;
 c.afficher ();
 cout << "Produit scalaire : " << a * b << "\n";
}

 a*b peut galement s'crire : a.operator *(b)


Les oprateurs de conversion


1) Conversion d'un type prdfini ou existant vers un autre type

Exemple : conversion d'un rel en un point

class point
{
...

public :
 point (float);

 point operator + (point);
};

point::point (float x)
{
 abscisse = x;
 ordonnee = 0.0;
}

void main ()
{
 point c;

 c = 3.2;
 c.afficher (); // 3.2,0.0
 c = c + 2.5; // 2.5 devient (2.5,0.0)
 c.afficher (); // 5.7,0.0
}


2) Conversion du type classe vers un type existant ou prdfini

Notation : operator identificateur_de_type()


Exemple : conversion d'un point en un rel

class point
{
...

public :
 ...

 operator float();
};

point::operator float()
{
 return abscisse;
}

void main ()
{
 point c(3.2, 5.0);
 float val;

 val = c;
 cout << val; // 3.2
 val = val + c; // 6.4
}



  Retour en haut de page Page suivante