Construir Arrays Constantes em C ++

Se você tem uma matriz e você não quer que seu conteúdo para mudar, você pode torná-lo uma matriz constante. As seguintes linhas de código, encontrados no Array05 exemplo, demonstrar essa abordagem:

const int permanente [5] = {1, 2, 3, 4, 5} -cout lt; lt; Permanente [1] lt; lt; endl-

Esta matriz funciona como qualquer outra matriz, exceto que você não pode mudar os números no seu interior. Se você adicionar uma linha como a seguinte linha, você recebe um erro do compilador, porque o compilador tem conhecimento de constantes:

Permanente [2] = 5-

Aqui está o erro que você começa quando você tentar fazer isso no Code :: Blocks:

erro: atribuição de somente leitura location 'Permanente [2]'

Que tal uma matriz constante de nonconstants? Você pode fazer aquilo? Bem, por vezes - dependendo do compilador. Tão horrível como o código a seguir (encontrados no Array06 exemplo) parece - e não é ANSI-padrão! - Você tem permissão para fazer isso com versões mais antigas dos compiladores gcc. (Microsoft Visual C ++ e Borland C ++ Builder não permitir que ele, e o Código :: Blocks compilador apresenta-o com um erro: atribuição de matriz inválida mensagem de erro.)

int nonconstant [5] = {1, 2, 3, 4, 5} -int OtherList [5] = {10, 11, 12, 13, 14} -OtherList = NonConstant-

Em outras palavras, que a terceira linha está dizendo, # 147 Esqueça o que OtherList aponta to- vez, torná-lo apontar para a primeira matriz, {1,2,3,4,5}!# 148- Agora, você realmente não deve escrever código como este (lembre-se, manter as coisas simples e compreensível), então se você quer evitar este tipo de coisa, você pode fazer a constante de matriz:

const int nonconstant [5] = {1, 2, 3, 4, 5} -const int OtherList [5] = {10, 11, 12, 13, 14} -OtherList = NonConstant-

Agora, quando o compilador chega à terceira linha, que lhe dá um erro:

erro: atribuição de somente leitura variável 'OtherList'

Mas você pode perceber que a maneira que você fez a constante de matriz era da mesma maneira que você fez seus elementos constantes no código que veio pouco antes de este exemplo. Ops! O que é isso tudo? Acontece que existem algumas regras.

A lista a seguir descreve as regras, em detalhe, para fazer matrizes constante:

  • Se você quiser fazer uma constante matriz, você pode preceder o seu tipo com a palavra const. Ao fazê-lo, o nome da matriz é constante, e os elementos dentro do array são também constante. Assim, você não pode ter uma matriz constante com elementos não constantes, nem pode ter uma matriz não constante com os elementos constantes.

  • A noção de um matriz não constante só existe em gcc e não é ANSI-padrão.

Se você realmente quiser obter técnico, o padrão C ++ ANSI diz que quando você colocar a palavra const na frente de uma declaração de matriz, você não está fazendo a matriz Constant você está dizendo que a matriz contém apenas constantes.

No entanto, quando você usa const Desta forma, a maioria dos compiladores também fazer a própria matriz constante. Mas isso é as pessoas Fine- não devem tomar um nome de matriz e copiá-lo para outra coisa. Isso não é bom estilo de programação, e está apenas pedindo para erros - ou, no mínimo, confusão - mais tarde.

menu