pour de simples raisons d’efficacité (d’ailleurs, pour les mêmes raisons, on placera
« en ligne » les fonctions operator == et operator !=).
b. Avec des fonctions amies
Il faut donc prévoir de déclarer comme amies, dans la classe vecteur3d, deux fonctions
(operator == et operator !=) recevant deux arguments de type vecteur3d correspondant aux
deux opérandes des opérateurs Voici la nouvelle déclaration 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 ;
}
friend int operator == (vecteur3d, vecteur3d) ;
friend int operator != (vecteur3d, vecteur3d) ;
} ;
int operator == (vecteur3d v, vecteur3d w)
{ if ( (v.x == w.x) && (v.y == w.y) && (v.z == w.z) ) return 1 ;
else return 0 ;
}
int operator != (vecteur3d v, vecteur3d w)
{ return ! ( v == w ) ;
}
Voici, à titre indicatif, un exemple de programme, accompagné du résultat fourni par
son exécution, utilisant n’importe laquelle des deux classes vecteur3d que nous venons
de définir :
#include "vecteur3d.h"
#include
using namespace std ;
main()
{ vecteur3d v1 (3,4,5), v2 (4,5,6), v3 (3,4,5) ;
cout << "v1==v2 : " << (v1==v2) << " v1!=v2 : " << (v1!=v2) << "\n" ;
cout << "v1==v3 : " << (v1==v3) << " v1!=v3 : " << (v1!=v3) << "\n" ;
}
v1==v2 : 0 v1!=v2 : 1
v1==v3 : 1 v1!=v3 : 0
200
Précédent

- 201/398

Suivant