Bonjour,
Je peine à comprendre à quoi sert la surcharge des opérateurs, quelle utilité ? Qu'est-ce que ça apporte ?
Est-ce que quelqu'un pourrait me donner une explication facile avec un exemple ?
Merci pour votre aide.
 Surcharge des opérateurs
 Surcharge des opérateurs
				
				
						
						
				Bonjour,
Je peine à comprendre à quoi sert la surcharge des opérateurs, quelle utilité ? Qu'est-ce que ça apporte ?
Est-ce que quelqu'un pourrait me donner une explication facile avec un exemple ?
Merci pour votre aide.
 
 
				
				
						
						
				Il y a plusieurs situations dans lesquelles surcharger des opérateurs est pratique:
- La surcharge de operator=
- la surcharge des opérateurs de flux (<< et >>)
- Pour des objets mathématiques: nombres complexes (std::complex), position et vecteur, matrices, polynomes, fonctions...
- Pour foncteurs, c'est à dire des classes ayant un opérateur d'appel de fonction.
- Pour des conteneurs d'objets. Par exemple un quad-tree ou un octree
- Pour des pointeurs intelligents
Les objets mathématiques utiliseront les opérateurs mathématiques (+, -, *, ...) et leurs composés (+=)
L'avantage, c'est de ne pas écrire un code tel que:
mais quelque chose d'autrement plus clair:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
Les foncteurs servent dans les algorithmes, et peuvent par exemple s'écrire ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
Note qu'il s'agit précisément de std::less (tel que défini en C++14).
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
Pour les conteneurs d'objets, comme une matrice, par exemple, on aura probablement l'un des opérateurs [] ou ().
Pour les pointeurs intelligents, en général, ce sont * et -> qui sont redéfinis.
Il y a d'autres usages, c'est certains, mais ce sont les principaux.
Partager