Les opérateurs dincré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 lon 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 lopérateur, dont largument est dabord augmenté puis retourné, signifie quil 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 dincrémentation, un de pré-incrément, lautre de post-incrément.
Exercice 7.3 | Comment écrire |
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 lincrémentation, afin déviter toute erreur.
Précédent | Sommaire | Suivant |