Incrémentation et décrémentation

Les opérateurs d’incrémentation ++ et de décrémentation -- peuvent être redéfinis comme les autres. Ils posent toutefois un problème particulier car on ne peut pas distinguer leur application en préfixe et en suffixe. Par exemple, si l’on a écrit :

fraction operator++(fraction& f){     f.num += f.den; return f;}				 // ...... fraction f = 5, g = f++/7;

la valeur de g sera 6/7 et non 5/7 comme attendu. En effet, la façon dont on a écrit l’opérateur, dont l’argument est d’abord augmenté puis retourné, signifie qu’il agit comme un pré-incrément. Le langage permet son utilisation sous les deux formes ++f ou f++, mais pas la définition de deux opérateurs d’incrémentation, un de pré-incrément, l’autre de post-incrément.

Exercice 7.3

Comment écrire operator++(fraction) si l’on souhaite obtenir l’effet d’un post-incrément ?

Voir solution

Pour cette raison, il est préférable de ne pas redéfinir ces opérateurs, sauf en leur donnant un sens tout à fait différent de l’incrémentation, afin d’éviter toute erreur.

Précédent Précédent Sommaire Sommaire Suivant Suivant