Olá pessoal. Tudo certo?!
Continuamos nossa série introdutória sobre C++. Nesse post, mostro a utilização do modificador const.
Esse operador é extremamente importante pois permite que deixemos claro quando nosso design não prevê que uma variável tenha seu valor alterado.
BTW, estou apresentando código usando gist. Fica mais fácil você dar fork e dar idéias.
Muitas vezes, desejamos que uma variável não possa ter seu valor original alterado. Ou seja, é uma constante.
Em C++, isso é muito simples. Veja:
No exemplo, percebemos que a não pode ser modificada. A vantagem de utilizar o modificador const é que a verificação ocorre em tempo de compilação (estática).
Importante observar que objetos marcados como const também não podem ter seus atributos modificados.
Esta é uma característica extremamente interessante. Não acha?
Repare o código que segue:
Ele não compila porque as funções acessam valores através do objeto this que não será compatível com a constante. Veja o erro do compilador:
Como resolver isso?! Adicionando “const” antes do corpo do método. Veja:
De forma geral, podemos marcar todos os corpos de método como const quando estes não alteram o estado do objeto. Mais uma vez, podemos pedir ajuda do compilador para evitar enganos.
Fácil, não?!
Lembra do readonly do C#?! Usamos o const em C++. Veja:
Entretanto, diferente do C#, temos que modificar a inicialização do objeto também (usando a inicialização indicada na parte 12). Veja:
Pegou a idéia?!
Considere o seguinte código:
Como o objeto que estamos passando como parâmetro é const, devemos explicitar a capacidade de suportar isso na lista de parâmetros do método. Caso contrário, mais uma vez, temos feedback “forte” (em forma de erro) do compilador.
Certo!?
Para concluir, gostaria de deixar algumas recomendações gerais:
Era isso.
Show de bola!
Já deu pra ver que a partir desta série vc vai fazer a de DX! xD
Exatamente.
Para falar de tópicos mais avançados em Windows 8, precisaremos ter boa fundamentação em C++.
Vai ser bacana!
Ola Elemar,
cara soh nao sei se a melhor “nomenclatura” seria chamar uma constante (const) de variavel.
Pq, no meu ponto de vista, algo que eh constante nunca pode ser chamado de variavel. Gera uma belissima confusao de termos.
Grande abraco
ps.: to com o teclado desconfigurado, por isso nao utilizei nada de acento e pontuacao
texto revisado. Obrigado pelo feedback.
Da pra mudar sim, ponteiros for the win!
Opa, acho que o último código não aparece (ou só eu não estou vendo). Na parte sobre Parámetros Imutaveis.
Fora isso, li o post bem rápido e ficou bem claro!
para mim está aparecendo. Perceba que mudei o padrão: Não mostro um código com erro, apenas outro funcionando.
Oops, por fim o código apareceu. Acho que o problema era comigo mesmo.
Abraços!
Oi Elemar,
Excelente série. Só para informá-lo, os seus gists não aparecem no Google Reader.
Abraços.
Pingback: C++ 101 – Parte 20 – Conhecendo o (deprecated) ‘auto_ptr’ « Elemar DEV