Exercice 82
Énoncé
Soit la classe vecteur3d définie dans l’exercice 70 par :
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 ; }
.....
} ;
Écrire une fonction indépendante coincide, amie de la classe vecteur3d, permettant de
savoir si deux vecteurs ont les mêmes composantes (cette fonction remplacera la
fonction membre coincide qu’on demandait d’écrire dans l’exercice 70).
Si v1 et v2 désignent deux vecteurs de type vecteur3d, comment s’écrit maintenant le
test de coïncidence de ces deux vecteurs ?
La fonction coincide va donc disposer de deux arguments de type vecteur3d. Si l’on
prévoit de les transmettre par référence, en interdisant leur éventuelle modification
dans la fonction, le prototype de coincide sera :
int coincide (const vecteur3d &, const vecteur3d &) ;
Là encore, le qualificatif const a un double rôle : il permet d’appliquer la fonction
coincide à des objets constants ou à des expressions de type point. Mais il permettra
également de l’appliquer à toute valeur susceptible d’être convertie dans le type point
(voir le chapitre relatif aux conversions définies par l’utilisateur).
Voici la nouvelle déclaration de notre classe :
/* fichier vect3D.H */
/* déclaration de la classe vecteur3d */
class vecteur3d
{ float x, y, z ;
public :
friend int coincide (const vecteur3d &, const vecteur3d &) ;
vecteur3d (float c1=0, float c2=0, float c3=0)
{ x = c1 ; y = c2 ; z = c3 ;
}
190
Précédent

- 191/398

Suivant