Argumentos const são um problema constante em c ++

Video: C++ - Aula 05 - Declarações múltiplas de variáveis, Constantes #Define

Desde C ++ passa o valor do argumento, não pode diferenciar por 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 veio de uma variável como Darg ou uma constante como 0.0.

Video: [C] Aula 06 - Constantes

duplo máxima (d1 dupla, duas vezes d2) -void otherFunction () {double darg = 2,0-duplo 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 mudar o valor do argumento dentro da função. Isto é demonstrado no seguinte implementação de máxima (duas vezes, duas vezes):

Video: Tutorial 15 - Expressões em C - Variáveis const

máximo dupla (const d1 dupla, const duplo d2) {double dResult = d1-se (d2 gt; 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 são mutáveis.

O que não é legal é o seguinte:

// estas duas funções não são suficientemente diferentes para ser máxima distinguisheddouble (d1 dupla, duas vezes d2) máximo -duplo (const d1 dupla, const duplo 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.


Publicações relacionadas