Je vais tenter une autre approche. Quand on défini la fonction :
	
	A operator== (B const &b, C const &C);
 On défini une fonction comme les autres, qui a comme nom operator==. On peut l'appeler ainsi :
	
	| 12
 3
 
 | B b;
C c;
A a = operator==(b, c); | 
 Pour l'instant, rien ne change par rapport à si j'avais appelé ma fonction f au lieu de operator==. Par contre, lui avoir donné ce nom me permet aussi d'écrire :
	
	| 12
 3
 
 | B c;
C c;
A a = b == c; | 
 Les deux codes sont équivalents. Maintenant, il y a un certain nombre de fonctions standard qui aimeraient bien faire == sur des types définis par l'utilisateur, mais par défaut, il ne sais pas comment faire pour calculer a == b avec a et b d'un type utilisateur. Il faut donc lui indiquer. Comme en général le résultat d'une telle comparaison est un booléen, il faut donc pour ça définir la fonction :
	
	| 12
 
 |  
bool operator==(MonType a, MonType b); | 
 
						
					
Partager