Argumentos const são um problema constante em C ++
Desde C ++ passa o valor do argumento, você não pode diferenciar pela const-ness. A seguir, o que realmente é passado para máximo() são os valores de 2,0 e 0,0. o máximo() função não pode dizer se esses valores vieram de uma variável como darg ou uma constante como 0.0.
dupla máxima (d1 dupla, dupla d2) -void otherFunction () {double darg = 2,0-double dNonNegative = máximo (darg, 0.0) -
Você posso declarar os argumentos de uma função a ser const. Essa declaração significa que você não pode alterar o valor do parâmetro dentro da função. Isto é demonstrado no seguinte implementação de máxima (double, double):
máxima dupla (const d1 casal, const double d2) {double dResult = d1-se (d2> dResult) {dResult = d2 -} // o seguinte seria illegald1 = 0.0- d2 = 0.0return dResult-}
A atribuição de d1 e d2 não é permitido porque ambos foram declarados const e, portanto, não podem ser alteradas.
O que não é legal é o seguinte:
// Estas duas funções não são diferentes o suficiente para ser máxima distinguisheddouble (d1 dupla, dupla d2) máxima -duplo (const d1 casal, const double d2) otherFunction -void () {double darg = 2,0 - // C ++ não sabe que uma das funções acima para calldouble dNonNegative = máximo (darg, 0.0) -
Aqui C ++ não tem nenhuma maneira de diferenciar entre os dois quando você faz a chamada.