Exercice 84
Énoncé
Soit une classe vecteur3d définie comme suit :
class vecteur3d
{ float x, y, z ;
public :
vecteur3d (float c1=0.0, float c2=0.0, float c3=0.0)
{ x = c1 ; y = c2 ; z = c3 ;
}
} ;
Définir les opérateurs == et != de manière qu’ils permettent de tester la coïncidence
ou la non-coïncidence de deux points :
a. en utilisant des fonctions membreþ;
b. en utilisant des fonctions amies.
a. Avec des fonctions membre
Il suffit donc de prévoir, dans la classe vecteur3d, deux fonctions membre de nom operator
== et operator !=, recevant un argument de type vecteur3d correspondant au second
argument des opérateurs (le premier opérande étant fourni par l’argument implicite this
des fonctions membre). Voici la déclaration complète de notre classe, accompagnée des
définitions des opérateurs :
class vecteur3d
{ float x, y, z ;
public :
vecteur3d (float c1=0.0, float c2=0.0, float c3=0.0)
{ x = c1 ; y = c2 ; z = c3 ;
}
int operator == (vecteur3d) ;
int operator != (vecteur3d) ;
} ;
int vecteur3d::operator == (vecteur3d v)
{ if ( (v.x == x) && (v.y == y) && (v.z ==z) ) return 1 ;
else return 0 ;
}
int vecteur3d::operator != (vecteur3d v)
{ return ! ( (*this) == v ) ;
}
Notez que, dans la définition de !=, nous nous sommes servi de l’opérateur ==. En
pratique, on sera souvent amené à réécrire entièrement la définition d’un tel opérateur,
199
Précédent

- 200/398

Suivant