Valores constantes
O const palavra-chave especifica que o valor de uma variável é constante e informa o compilador para impedir que o programador modificá-lo.
// constant_values1.cpp
int main() {
const int i = 5;
i = 10; // C3892
i++; // C2105
}
No C++, você pode usar o const palavra-chave em vez da # define diretiva de pré-processamento para definir valores constantes.Valores definidos com const estão sujeitos a verificação de tipos e pode ser usado no lugar de expressões constantes.No C++, você pode especificar o tamanho de uma matriz com um const variável da seguinte maneira:
// constant_values2.cpp
// compile with: /c
const int maxarray = 255;
char store_char[maxarray]; // allowed in C++; not allowed in C
Em C, padrão de valores constantes para ligação externa, portanto, eles podem aparecer apenas em arquivos de origem.No C++, padrão de valores constantes para ligação interna, que permite que eles apareçam nos arquivos de cabeçalho.
O const palavra-chave também pode ser usado em declarações do ponteiro.
// constant_values3.cpp
int main() {
char *mybuf = 0, *yourbuf;
char *const aptr = mybuf;
*aptr = 'a'; // OK
aptr = yourbuf; // C3892
}
Um ponteiro para uma variável declarada como const podem ser atribuídos apenas a um ponteiro que também é declarado como const.
// constant_values4.cpp
#include <stdio.h>
int main() {
const char *mybuf = "test";
char *yourbuf = "test2";
printf_s("%s\n", mybuf);
const char *bptr = mybuf; // Pointer to constant data
printf_s("%s\n", bptr);
// *bptr = 'a'; // Error
}
Saída
test
test
Você pode usar ponteiros para dados constantes como parâmetros da função para impedir que a função modificando um parâmetro passado através de um ponteiro.
Para objetos que são declarados como const, você só pode chamar funções de membro constante.Isso garante que o objeto de constante nunca é modificado.
birthday.getMonth(); // Okay
birthday.setMonth( 4 ); // Error
Você pode chamar o membro constante ou nonconstant funções para um objeto nonconstant.Você também pode sobrecarregar uma função de membro usando o const palavra-chave; Isso permite que uma versão diferente da função a ser chamado para objetos de constantes e nonconstant.
Você não pode declarar construtores ou destruidores com o const palavra-chave.
C e C++ diferenças de const
Quando você declara uma variável como const em um arquivo de código do código-fonte C, você fazê-lo como:
const int i = 2;
Você pode usar essa variável em outro módulo da seguinte maneira:
extern const int i;
Mas para obter o mesmo comportamento no C++, você deve declarar sua const variáveis como:
extern const int i = 2;
Se você quiser declarar uma extern variável em um arquivo de código fonte C++ para uso em um arquivo de código do código-fonte C, use:
extern "C" const int x=10;
Para impedir a desconfiguração do nome pelo compilador C++.