int vecteur3d::coincide (vecteur3d * adv)
{ if ( (adv->x == x) && (adv->y == y) && (adv->z == z)
return 1 ;
else return 0 ;
}
En utilisant this, la définition de coincide pourrait faire moins de distinction entre ses
deux arguments (l’un implicite, l’autre explicite) :
int vecteur3d::coincide (vecteur3d * adv)
{ if ( (adv->x == this->x) && (adv->y == this->y) && (adv->z == this->z) )
return 1 ;
else return 0 ;
}
c. La déclaration de coincide devient :
int coincide (vecteur3d &) ;
Et sa nouvelle définition est :
int vecteur3d::coincide (vecteur3d & v)
{ if ( (v.x == x) && (v.y == y) && (v.z == z) ) return 1 ;
else return 0 ;
}
Notez que le corps de la fonction est resté le même qu’en a.
Voici les trois appels de coincide correspondant respectivement aux trois définitions
précédentes :
a. v1.coincide (v2) ; ou v2.coincide (v1) ;
b. v1.coincide (&v2) ou v2.coincide (&v1) ;
c. v1.coincide (v2) ou v2.coincide (v1) ;
Discussion
La surdéfinition d’opérateur offrira une mise en œuvre plus agréable de ce test de
coïncidence de deux vecteurs. C’est ainsi qu’il sera possible de surdéfinir l’opérateur
de comparaison == (pour la classe vecteur3d) et, partant, d’exprimer ce test sous la
simple forme v1 == v2.
157
Précédent

- 158/398

Suivant