Const arguments sont un problème constant en C ++

Depuis C ++ passe la valeur de l'argument, vous ne pouvez pas différencier en const-Ness. Dans ce qui suit, ce qui en fait est transmis à maximum () sont les valeurs 2.0 et 0.0. La maximum () fonction ne peut pas dire si ces valeurs sont venus comme une variable DARG ou une constante comme 0.0.

à double maximale (d1 à double, double d2) -void otherFunction () {double-DARG = 2.0 double dNonNegative = maximale (DARG, 0.0) -

Tu pouvoir déclarer les arguments d'une fonction d'être const. Une telle déclaration signifie que vous ne pouvez pas changer la valeur de l'argument dans la fonction. Ceci est démontré dans la mise en oeuvre suivante de maximale (doubles, doubles):

à double maximale (const deux d1, d2 const doubles) {deux dResult = d1-si (d2> dResult) {dResult = d2 -} // la suivante serait illegald1 = 0.0- d2 = 0.0return dResult-}

L'affectation à d1 et d2 est pas autorisé parce que les deux ont été déclarés const et donc ne sont pas modifiables.

Ce qui est légal est la suivante:

// Ces deux fonctions ne sont pas suffisamment différent pour être au maximum de distinguisheddouble (Double d1, double d2) maximale -double (const double d1, d2 const doubles) otherFunction -void () {double-DARG = 2.0 - // C ++ ne sais pas dont l'une des fonctions ci-dessus à calldouble dNonNegative = maximale (DARG, 0,0) -

Voici C ++ a aucun moyen de différencier entre les deux lorsque vous faites l'appel.


» » » » Const arguments sont un problème constant en C ++