surcharge d'operateur quand en faire des fonctions membres/pas membres - C++ - Programmation
Marsh Posté le 16-06-2003 à 12:45:17
règle générale: n'utiliser friend qu'en dernier recours
explication sur un exemple:
1) quand utliser une surcharge d'opérateur sur une fonction membre: quand le résultat de l'opération travaille avec this, en lecture ou en ecriture: [], +=, =, (), etc.
2) quand utiliser une surcharge d'oérateur sur une fonction externe non friend: quand la condition précédente n'est pas remplie et que la fonction est symétrique. +, -, <, ==
friend en dernier recours
Code :
|
avec ça c'est facile de faire la + hors classe
Code :
|
personnellement j'utilise toujours cela pour les opérateurs binaires (+,..., < ) j'ai meme des macros pour générer tout ça.
la classe A a deux méthode: une qui renvoie une représentation, l'autre qui ecrit cette représentation dans un flux.
si
cout << A.print()
ou
A.print(cout)
ne te satisfont pas
tu peux alors sans friendness, surcharger un opérateur.
je fonctionne aussi comme ça, l'avantage et que la fonction membre print() permet de représenter un objet dans une chaine simplement, sinon tu devrait passer par un stringstream
tout ça constitue une bonne technique de design et une bonne maitrise de inlining permet des performances parfaites
Marsh Posté le 16-06-2003 à 09:16:07
Comment savoir si un fonction de surcharge doit etre membres ou friend??