Argumentos const son un problema constante en c ++

Puesto que C ++ pasa el valor del argumento, no se puede diferenciar por const-Ness. En lo que sigue, lo que realmente se pasó a máximo() son los valores 2.0 y 0.0. los máximo() función no puede decir si estos valores provienen de una variable como dARG o una constante como 0,0.

Video: Advanced C++: const and Functions

doble máximo (doble d1, d2 doble) -void otherFunction () {double Darg = 2.0 de doble dNonNegative = máximo (Darg, 0,0) -

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áxima (doble, doble):

Video: Tutorial C Punteros const

máximo doble (doble d1 const, const doble d2) {double dResult = d1-Si (d2 gt; dResult) {dResult = d2 -} // la 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 se pueden modificar.

Video: 04.- Curso C++. Trabajar con Constantes

Lo que no es legal es la siguiente:

// estas dos funciones no son lo suficientemente diferentes como para ser máximo distinguisheddouble (doble d1, d2 doble) máximo -double (doble d1 const, const doble d2) 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 se hace la llamada.

Artículos Relacionados