Como usar o const palavra-chave em C ++

UMA apontador é uma variável que Número 147 pontos em # 148- outras variáveis ​​em C ++. a palavra-chave const significa que uma variável não pode ser alterado uma vez que tenha sido declarado e inicializado.

const double PI = 3.1415926535-

Argumentos para funções também podem ser declaradas const, o que significa que o argumento não pode ser alterado dentro da função. No entanto, este apresenta uma dicotomia interessante no caso das variáveis ​​de ponteiro. Considere a seguinte declaração:

int const * pInt-

Exatamente o que é a constante aqui? O que você não pode mudar? É a variável cerveja ou o inteiro apontado para pelo cerveja? Acontece que ambos são possíveis, mas esta declaração declara um ponteiro variável para um local de memória constante. Assim, a seguinte:

const int * pInt- // declara um ponteiro para uma const intint NVAR-Pint = nVar- // isso é permitido * Pint = 10 - // mas isso não é

Você pode alterar o valor de cerveja, por exemplo, atribuindo-lhe o endereço do NVAR. Mas o trabalho final no exemplo de trecho gera um erro do compilador desde que você não pode mudar o const int apontou para por cerveja.

E se você tivesse a intenção de criar uma variável de ponteiro com um valor constante? O seguinte trecho mostra isso em ação:

int NVAR-int * const cpInt = nVar- // declara um ponteiro constante // para um inteiro variável * cpInt = 10 // agora isso é legal ... cpInt ++ - // ... mas isso não é

a variável cpInt é um ponteiro constante para uma variável int. O programador não pode alterar o valor do ponteiro, mas ela pode mudar o valor do inteiro apontada.

o const-ness podem ser adicionados através de uma atribuição ou de inicialização, mas não pode ser (facilmente) jogar fora. Assim, a seguinte:

int NVAR = 10 = int pVar NVAR-const int * pcVar = pVar- // este é legalint * pVar2 = pcVar - // isto não é

A atribuição pcVar = pVar- é ok - isto é adicionando o const restrição. O trabalho final no fragmento não é permitido, uma vez que as tentativas para remover o const-ness de restrição pcVar.

Uma variável pode ser reformulada implicitamente como parte de uma chamada de função, como no exemplo a seguir:

fn void (int const NVAR) -void mainFn () {int n-fn (10) - // chama fn (const int) Fn (N) - // chama a mesma função por tratamento de N} // como se fosse const

a declaração fn (int const) diz que a função fn () não modifica o valor de seu argumento. Isto é importante quando se passa uma referência para a constante de 10. Não é importante quando se passa uma referência para a variável N, mas não dói nada.

Finalmente, const pode ser usado como um discriminador de funções entre o mesmo nome:

fn void (int const NVAR) fn -void (int NVAR) -void mainFn () {int n-fn (10) - // chama o primeiro functionfn (n) - // chama a segunda função}

menu