Escopo
Nomes de C++ podem ser usados apenas em determinadas regiões de um programa.Essa área é chamada de "escopo" do nome.O escopo determina o "tempo de vida" de um nome que não denota um objeto de extensão estático.Também, o escopo determina a visibilidade de um nome, quando a classe construtores e destrutores são chamados e locais para o escopo de variáveis são inicializadas.(Para obter mais informações, consulte construtores e destruidores.) Existem cinco tipos de escopo:
Escopo local de um nome declarado em um bloco é acessível somente dentro desse bloco e blocos colocados por ele e só depois do ponto da declaração.Os nomes de argumentos formais para uma função no escopo do bloco mais externo da função têm escopo local, que eles tinham sido declarados dentro do bloco que envolve o corpo da função.Considere o fragmento de código a seguir:
{ int i; }
Porque a declaração do i em um bloco delimitado por chaves, i tem um escopo local e nunca está acessível porque nenhum código acessa-lo antes da chave de fechamento.
Escopo de função os rótulos são os únicos nomes que têm escopo de função.Eles podem ser usados em qualquer lugar dentro de uma função, mas não estão acessíveis fora dessa função.
Escopo do arquivo qualquer nome declarado fora de todas as classes ou blocos tem escopo de arquivo.Ele está acessível em qualquer lugar da unidade de conversão após sua declaração.Nomes com escopo de arquivo que não declarar objetos estáticos são chamados de nomes globais.
No C++, o escopo do arquivo é também conhecido como escopo de namespace.
Escopo de classe nomes de membros de classe têm escopo de classe.Funções de membro de classe podem ser acessadas usando somente os operadores de seleção de membro (. ou – >) ou operadores de ponteiro para membro (. * ou – > *) em um objeto ou um ponteiro para um objeto dessa classe; dados de membro não estática de classe são considerados locais para o objeto dessa classe.Considere a seguinte declaração de classe:
class Point { int x; int y; };
Os membros da classe x e y são considerados no escopo da classe Point.
Escopo de protótipo nomes declarados em um protótipo de função são visíveis somente até o final do protótipo.O protótipo a seguir declara três nomes (strDestination, numberOfElements, e strSource); Esses nomes vá fora do escopo no final do protótipo:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );