C ++ variáveis ​​globais

C ++ variáveis ​​globais
Um local de memória precisa ser identificado e é identificado por um nome, chamado de variável. A duração de um programa, de cima para baixo, tem partes diferentes que fazem coisas diferentes. Algumas porções estão relacionadas, mas descontínuas por comprimento. Os intervalos pelo comprimento das porções descontínuas têm outras porções, que estão relacionadas a outras partes.

Um escopo é um conjunto de partes relacionadas onde uma variável pode ser usada ou vista. Escopos têm nomes. Uma variável global é uma variável que pode ser vista em todo escopo de um programa. Uma variável global pode ser de diferentes tipos. Este artigo explica como uma variável global pode ser vista em escopos comuns.

Conteúdo do artigo

  • Porções relacionadas
  • Escopo global e variável global
  • Bloqueio de escopo e variável global
  • Escopo de função normal e variáveis ​​globais
  • Escopo de classe e variável global
  • Conclusão

Porções relacionadas

Considere o seguinte programa:

#incluir
usando namespace std;
int it = 5;
float ft = 2.7;
int fn1 (int integ = it)

/* declarações */
retornar integ;

FLOAT FN2 (FLOAT FLT = ft)

/* declarações */
retornar FLT;

int main ()

cout << fn1() << endl;
cout << fn2() << endl;
retornar 0;

A saída é:

5
2.7

As variáveis ​​“it” e ft são de diferentes tipos. Considerando a variável "it" primeiro: 'it' é vista em sua linha de declaração. Algumas linhas são ignoradas. É então visto na assinatura de fn1 (). É visto também em todo o corpo de fn1 (). Algumas linhas e uma porção são ignoradas. Pode então ser visto em todo o corpo da função principal (). Na verdade, é visto indiretamente, na primeira declaração da função principal (), através da chamada de função fn1 (). As porções para a variável "it" foram ilustradas.

Considerando a variável FT agora: ft é visto em sua linha de declaração. Algumas linhas e uma parte (definição de FN1) são ignoradas. Uma linha em branco é ignorada. É então visto na assinatura de fn2 (). É visto em todo o corpo de fn2 (). Pode então ser visto em todo o corpo da função principal (). Na verdade, é visto indiretamente, na segunda declaração da função principal (), através da chamada de função fn2 (). As partes para a variável 'ft' acabaram de ser ilustradas.

Escopo global e variável global

Quando um programador começa a digitar um arquivo, esse é o escopo global. Considere o seguinte programa:

#incluir
usando namespace std;
char var = 'e';
int main ()

cout <cout <<::var<<'\n';
retornar 0;

A saída é:

E
E

Neste programa, a parte ou o escopo do VAR inicia a partir do ponto de declaração de VAR, continua para baixo até o final da unidade de tradução (arquivo).

O corpo da função principal () é um escopo diferente por si só; O escopo global ninhos no escopo da função principal ().

A variável var é uma variável de escopo global porque pode ser visto em todos os lugares do arquivo, começando de onde foi declarado. Pode ser visto no escopo da função principal (). No programa anterior, "it" e ft são variáveis ​​de escopo global. Cada um pode ser visto em sua linha de declaração, em um escopo de função e no escopo da função principal ().

Para acessar uma variável global (variável do escopo global) de um escopo diferente, o nome da variável é usado diretamente ou precedido pelo operador de resolução de escopo, :: Como mostrado no programa acima.

Explicando o código: todos os programas em C ++ devem começar com pelo menos as duas primeiras linhas que este programa começa com. As linhas são:

#incluir
usando namespace std;

A primeira linha aqui não é uma declaração; É uma diretiva, uma diretiva de inclusão. Inclui a biblioteca de fluxo de entrada/saída, responsável por enviar saída para o terminal e receber a entrada do teclado. O terminal e o teclado juntos são chamados de console. Esta biblioteca é chamada de biblioteca iostream (i.e., a biblioteca de fluxo de entrada/saída).

A segunda linha do programa não é uma diretiva; É uma declaração e termina com um semicolon. Diz que qualquer nome usado abaixo é do espaço de nome padrão, a menos que indicado de outra forma. Pode interessar ao leitor, saber que o espaço para nome tem um escopo; No entanto, isso não será abordado neste artigo.

A próxima declaração, abaixo das duas primeiras linhas, é uma declaração completa variável de char. Na função Main (), as duas primeiras linhas imprimem o valor da mesma variável para o terminal de maneiras ligeiramente diferentes.

Bloqueio de escopo e variável global

Exemplos de declarações compostas são as declarações se, enquanto, para, para ou alternar. Cada uma dessas declarações compostas pode ter um bloco. Uma variável de escopo de bloco é uma variável definida em um bloco. Seu escopo começa em seu ponto de declaração e termina no final de seu bloco. Uma variável global é normalmente definida fora e acima deste bloco. Uma variável global pode ser vista fora deste bloco, na linha de cabeçalho deste bloco, e dentro do bloco. O programa a seguir ilustra isso com um IF-Block:

#incluir
usando namespace std;
int i = 5;
int main ()

cout << "First i is: " << i << endl;
if (i == 5)
cout << "Second i is same: " << i << endl;

retornar 0;

A saída é:

Primeiro eu sou: 5
Segundo eu é o mesmo: 5

O Block IF é um bloco aninhado para o escopo da função principal (), que é um bloco aninhado para o escopo global. Este programa mostra que as variáveis ​​globais podem ser vistas em blocos aninhados.

Substituindo em bloco aninhado

Uma variável global pode ser substituída em um bloco aninhado. Ou seja, uma variável global pode ser substituída por uma variável de mesmo nome em um bloco aninhado. No programa seguinte, eu é substituído por outra entidade, um flutuador, em um bloco aninhado. E esta é a regra: uma variável em um escopo aninhado com o mesmo nome de um fora do escopo substitui essa variável externa. Portanto, para o escopo aninhado, a variável declarada fora do escopo aninhado com o mesmo nome não pode ser visto dentro do escopo aninhado; Porque aquele dentro do escopo aninhado tomou seu lugar dentro do escopo aninhado. Aquele dentro do escopo aninhado é visto de seu ponto de declaração até o final de seu bloco. O dentro do escopo aninhado não precisa ter nenhum relacionamento com o fora do escopo aninhado. O programa é:

#incluir
usando namespace std;
int i = 5;
int main ()

cout << "First i is: " << i << endl;
if (i == 5)
flutuar i = 7.0;
cout << "Second i is different: " << i << endl;

retornar 0;

A saída é:

Primeiro eu sou: 5
Segundo, eu é diferente: 7

A variável substituída é do mesmo nome e ainda pode ser do mesmo tipo.

Escopo de função normal e variável global

Considere o seguinte programa:

#incluir
usando namespace std;
int fn (int integ);
int i = 5;
int fn (int integ = i)

/* declarações */
retornar integ;

int main ()

cout << fn() << endl;
retornar 0;

A saída é 5. A região declarativa da função fn () consiste na linha "int fn (int integ);" de seu protótipo, a parte de sua definição no escopo global e a declaração de chamada no corpo da função principal. Todas essas linhas e porções formam o escopo da função fn (). A assinatura da função de fn () faz parte do escopo da função (assim como o corpo). Agora, a variável global, fui visto em todas as linhas ou partes da função FN.

Considere o seguinte programa, com aulas e objetos instantados:

#incluir
usando namespace std;
int i = 5;
classe calc
privado:
int pm = i;
público:
void mfn (int intere = i)

cout << inte << endl;

;
Classe DCLA: Public Calc

público:
int dm = i;
;
int main ()

Calc obj;
obj.mfn ();
DCLA DOBJ;
cout << dObj.dM << endl;
retornar 0;

A saída é:

5
5

O programa tem uma classe base, calc e sua classe derivada, DCLA. A classe base é pública para a classe derivada: isso significa que a classe derivada pode ver os membros protegidos da classe base. Portanto, as partes para a classe, Calc, são seu bloco e o bloco da classe derivada, DCLA. Isto é, existem duas porções para o escopo da classe, calc. Agora, a variável global, eu é vista nessas duas porções.

Conclusão

Um local de memória precisa ser identificado e é identificado por um nome, chamado de variável. A duração de um programa, de cima para baixo, tem partes diferentes que fazem coisas diferentes. Algumas porções estão relacionadas, mas descontínuas por comprimento. Os intervalos pelo comprimento das porções descontínuas têm outras porções, que estão relacionadas a outras partes.

Um escopo é um conjunto de partes relacionadas onde uma variável pode ser usada ou vista. Escopos têm nomes. Uma variável global é uma variável que pode ser vista em todo escopo do programa. Uma variável global pode ser de qualquer tipo.