Outils d'utilisateurs

Outils du Site


operateurs

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

operateurs [2014/10/10 01:34]
gbdivers
operateurs [2015/03/22 16:30] (Version actuelle)
gbdivers [Opérateurs arithmétiques]
Ligne 14: Ligne 14:
 </code> </code>
  
-Il n'est pas forcement pertinent de créer tous les opérateurs (une classe peut être comparable par égalité sans être comparable par plus-petit-que par exemple), mais lorsque l'on définit certain opérateur, il est logique de définir certains autres opérateurs :+Il n'est pas forcement pertinent de créer tous les opérateurs (une classe peut être comparable par égalité sans être comparable par plus-petit-que par exemple), mais lorsque l'on définit certains opérateurs, il est logique de définir certains autres opérateurs :
  
   * égalité == et différent !=   * égalité == et différent !=
-  * < et >, <= et <+  * < et >, ≤ et 
   * +a et -a   * +a et -a
   * + et +=, - et -=, * et *=, / et /=, % et %=   * + et +=, - et -=, * et *=, / et /=, % et %=
Ligne 24: Ligne 24:
   * ~, &, |, <<, >> et ^   * ~, &, |, <<, >> et ^
  
-A voir, pour chaque classe, s'il est pertinent ou non de créer les opérateurs.+A voir, pour chaque classe, s'il est pertinent ou non de créer ces opérateurs.
  
 ===== Opérateurs libres et membres ===== ===== Opérateurs libres et membres =====
Ligne 60: Ligne 60:
 </code> </code>
  
-Avec la fonction membre, l'opérateur s'applique sur l'objet appelé (this) et sur l'objet passé en argument. Avec la fonction libre, comparaison des objets passé en argument+Avec la fonction membre, l'opérateur s'applique sur l'objet appelé (this) et sur l'objet passé en argument. Avec la fonction libre, comparaison des objets passés en argument
  
 <note warning>Attention sur la syntaxe. Si on sépare la définition et l'implémentation de la fonction membre, on va écrire : <note warning>Attention sur la syntaxe. Si on sépare la définition et l'implémentation de la fonction membre, on va écrire :
Ligne 72: Ligne 72:
 </code> </code>
  
-Il faut bien faire attention à ne pas confondre la fonction membre A::operator et la fonction operator (sans le spécificateur de portée A::). La première version (membre) s'applique sur l'objet courant et n'a donc besoin que d'une seul paramètre de fonction ''A::operator==(A a)''. Le second doit prendre deux argument ''operator==(A a, A b)''.+Il faut bien faire attention à ne pas confondre la fonction membre A::operator et la fonction operator (sans le spécificateur de portée A::). La première version (membre) s'applique sur l'objet courant et n'a donc besoin que d'une seul paramètre de fonction ''A::operator==(A a)''. Le second doit prendre deux arguments ''operator==(A a, A b)''.
 </note> </note>
  
Ligne 144: Ligne 144:
 __ en annexe ? __ __ en annexe ? __
  
-Déjà utilisé. Et écrit dans les prédicat+Déjà utilisé. Et écrit dans les prédicats
  
 ==== Opérateurs de comparaison ==== ==== Opérateurs de comparaison ====
Ligne 187: Ligne 187:
 </code> </code>
  
 +Problème avec rvalue, use reference qualifier, cf : http://stackoverflow.com/questions/28026352/is-there-any-real-use-case-for-functions-reference-qualifiers
 ===== Les opérateurs d'incrémentation et décrémentation ===== ===== Les opérateurs d'incrémentation et décrémentation =====
  
-++ et --. Deux version, en préfixe et postfixe. Quand on écrit operator++, il faut savoir si on défini ++a ou a++. Pour régler ce problème, on ajoute un paramètre qui ne sert pas dans l'opération :+++ et --. Deux versions, en préfixe et postfixe. Quand on écrit operator++, il faut savoir si on défini ++a ou a++. Pour régler ce problème, on ajoute un paramètre qui ne sert pas dans l'opération :
  
 <code cpp> <code cpp>
Ligne 230: Ligne 231:
 </code> </code>
  
-===== Opérateursparticuliers =====+===== Opérateurs particuliers =====
  
  
operateurs.1412897699.txt.gz · Dernière modification: 2014/10/10 01:34 par gbdivers