Latest web development tutorials

classe de armazenamento C ++

classe de armazenamento define um C ++ variáveis ​​de programa / intervalo de função (visibilidade) e ciclo de vida. Estes especificadores colocado antes de modificar o tipo. Listados abaixo estão os programas de armazenamento de classe C ++ estão disponíveis:

  • automático
  • registrar
  • estático
  • extern
  • mutável

classe de armazenamento auto

classe de armazenamentoauto é todos os tipos variáveis de armazenamento padrão local.

{
   int mount;
   auto int month;
}

O exemplo acima define duas variáveis ​​com o mesmo classe de armazenamento, auto só pode ser usado dentro de uma função, ou seja, auto somente modifica a variável local.

registar classe de armazenamento

registar classe de armazenamento é usado para definir armazenados nos registos em vez de RAM nas variáveis locais.Isto significa que o tamanho máximo da variável é igual ao tamanho do registo (geralmente uma palavra), e não pode ser aplicado ao mesmo operador unária '&' (porque não tem nenhum local de memória).

{
   register int  miles;
}

apenas de se registar para acesso rápido às variáveis, tais como contador. Deve também notar-se que a definição de "registo" não significa que a variável será armazenada num registo, isso significa que a variável pode ser armazenado num registo, dependendo das limitações do hardware e implementação.

classe de armazenamento estática

classe de armazenamentoestática instrui o compilador para manter a existência de variáveis locais no ciclo de vida do programa, sem a necessidade de inseri-lo cada vez que você vá fora do escopo e ser criados e destruídos.Portanto, a utilização de variáveis ​​locais estáticos pode ser modificado para manter o valor das variáveis ​​locais entre chamadas de função.

modificador estático pode ser aplicada para variáveis ​​globais. Quando a variável estática global modificada, a variável irá limitar o escopo da instrução em seus arquivos.

Em C ++, quando usado em membros de dados de classe estáticos, todos os objetos resultará em apenas uma cópia da classe membros são compartilhados.

#include <iostream>
 
// 函数声明 
void func(void);
 
static int count = 10; /* 全局变量 */
 
int main()
{
    while(count--)
    {
       func();
    }
    return 0;
}
// 函数定义
void func( void )
{
    static int i = 5; // 局部静态变量
    i++;
    std::cout << "变量 i 为 " << i ;
    std::cout << " , 变量 count 为 " << count << std::endl;
}

Quando o código acima é compilado e executado, ele produz os seguintes resultados:

变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0

classe de armazenamento externo

classe de armazenamentoexterno é usado para fornecer uma referência a uma variável global, a variável global para todos os arquivos de programa são visíveis.Quando você usa 'externo', que não pode inicializar uma variável, o nome da variável irá apontar para um local de armazenamento previamente definido.

Quando você tem vários documentos e definir uma variável global ou função que pode ser usado em outros documentos, você pode usarexternem outros arquivos para obter uma referência variável ou função definida. Pode serentendido,extern é usado para declarar uma variável global ou função em outro arquivo.

modificador externo é normalmente utilizado quando existem dois ou mais arquivos compartilhar as mesmas funções ou variáveis ​​globais de tempo, como se segue:

Primeiro arquivo: main.cpp

#include <iostream>
 
int count ;
extern void write_extern();
 
int main()
{
   count = 5;
   write_extern();
}

O segundo arquivo: support.cpp

#include <iostream>
 
extern int count;
 
void write_extern(void)
{
   std::cout << "Count is " << count << std::endl;
}

Aqui, a segunda palavra-chave do arquivoexternoé usado para declarar a primeira contagem foi definida no main.cpp arquivo no. Agora, compilar ambos os arquivos, como segue:

$ g++ main.cpp support.cpp -o write

Isso geraescrever programa executável tenta executar gravação,que irá produzir os seguintes resultados:

$ ./write
Count is 5

classe de armazenamento mutável

especificadormutável só se aplica a classes de objetos, que será no final deste tutorial para explicar.Ele permite que os membros das constantes objeto substituto. Isto é, um membro mutáveis ​​podem ser modificados por funções membro const.