Argumentos Const son un problema constante en c ++
Desde C ++ pasa el valor del argumento, no se puede diferenciar por const-ness. En lo que sigue, lo que realmente se pasa a máxima () son los valores de 2.0 y 0.0. los máxima () función no se puede decir si estos valores provienen de una variable como Darg o una constante como 0.0.
doble máximo (doble d1, d2 doble) -void otherFunction () {double Darg = 2.0 de doble dNonNegative = máximo (Darg, 0.0) -
usted poder declarar los argumentos de una función para ser const. Tal declaración significa que no se puede cambiar el valor del argumento dentro de la función. Esto se demuestra en la siguiente implementación de máximo (doble, doble):
doble máximo (const doble d1, d2 const doble) {double dResult = d1-si (d2> dResult) {dResult = d2 -} // el siguiente sería illegald1 = 0.0- d2 = 0.0return dResult-}
La asignación a d1 y d2 no está permitido porque ambos han sido declarados const y por lo tanto no son modificables.
Lo que no es legal es el siguiente:
// Estas dos funciones no son lo suficientemente diferentes como para ser el máximo distinguisheddouble (doble d1, d2 doble) máxima -doble (const doble d1, d2 const doble) otherFunction -void () {double Darg = 2,0 - // C ++ no sabe que una de las funciones anteriores para calldouble dNonNegative = máximo (Darg, 0.0) -
Aquí C ++ no tiene manera de diferenciar entre los dos cuando usted hace la llamada.