Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2316 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  surcharge d'operateur quand en faire des fonctions membres/pas membres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

surcharge d'operateur quand en faire des fonctions membres/pas membres

n°428720
grosmethos
Posté le 16-06-2003 à 09:16:07  profilanswer
 

Comment savoir si un fonction de surcharge doit etre membres ou friend??

mood
Publicité
Posté le 16-06-2003 à 09:16:07  profilanswer
 

n°429073
Taz
bisounours-codeur
Posté le 16-06-2003 à 12:45:17  profilanswer
 

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 :
  1. class A
  2. {
  3.   const A & operator+=(const A &other);
  4.   string print() const;
  5.   ostream & print(ostream & ) const;
  6. };


 
avec ça c'est facile de faire la + hors classe
 

Code :
  1. A operator+(const A &lhs, const A &rhs)
  2. {
  3.   A tmp(lhs);
  4.   tmp+=b;
  5.   return tmp;
  6. }

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  surcharge d'operateur quand en faire des fonctions membres/pas membres

 

Sujets relatifs
[asp]ça existe les fonctions , procedures en asp?Liste des fonctions des libraires standards
Organisation des fonctions[C++]Un problème de notions d'objet : redefinition de fonctions
surcharge d'opérateurs ?[C#] [ASP] [SQL Server 2000] Fonctions built-in de SQL ne marchent pas
2 questions : gestion des exceptions et paramètres des fonctions(Trouvé merci)trou de mémoire.... sur les fonctions de math.h
Javascript : fonctions[Perl DBI] selectcol_arrayref et autres fonctions du genre : attributs
Plus de sujets relatifs à : surcharge d'operateur quand en faire des fonctions membres/pas membres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR