C ++ namespaces

C ++ namespaces
O namespace é um contêiner para identificadores. Em C ++, se quisermos exigir alguma declaração, como algumas variáveis, funções e classes em nosso programa, colocamos em um grupo. Este grupo é chamado de espaço para nome. Então, o namespace é um grupo de declarações.

Características idênticas do espaço para nome

a. O espaço para nome é geralmente uma palavra -chave e usamos o espaço para nome com qualquer nome único em nosso programa.

b. Usamos namespace em nosso arquivo de origem. O namespace também pode ser usado no arquivo de cabeçalho definido pelo usuário. Isso significa que criamos um arquivo de cabeçalho e dentro do arquivo de cabeçalho, podemos usar namespace.

c. O namespace coloca o nome de seu membro em um espaço distinto, para que eles não entrem em conflito com os nomes em outros namespaces ou namespaces globais.

Criando um espaço de nome no programa C ++

Namespace myExample
// declarações

a. Diferentemente da definição de classe, a definição de espaço para nome não termina com um semicolon.

b. O espaço para nome deve ser declarado no escopo global ou aninhado dentro de outro espaço para nome (1).

c. O namespace tem outro recurso importante. Podemos usar um nome de alias para o nosso nome de namespace. Pode ser usado como:

namespace me = myExample;

Aqui, eu é o nome do alias do espaço para nome do meu exemplo. Se o declararmos uma vez, podemos usar este espaço de nome MyExample como eu ao longo do programa.

Namespaces sem nome

Um espaço para nome com nenhum nome também pode ser permitido no programa C ++.

Espaço para nome

// declarações

Exemplo de programação 1:

#incluir
usando namespace std; // usando namespace;
namespace myExample
int x;
int fun1 ();
Exemplo de classe

público:
void fun2 ();
;

int myExample :: fun1 ()

cout<<“ Hello fun1 :\n ” ;

void myExample :: Exemplo :: fun2 () /* :: Scope Resolution /Operator é usado aqui.*/

cout<<“ Hello fun2 :\n ” ;

Usando namespace myExample; // namespace é usado aqui.
int main ()

x = 6;
fun1 ();
Exemplo ob; // Crie uma instância da classe de exemplo
ob.fun2 ();

Saída:

Explicação:

Aqui, declaramos que um espaço para nome é chamado de exemplo. Dentro do espaço para nome, declaramos uma variável 'x' e uma função fun1 (). Um exemplo de classe também é declarado dentro do espaço para nome. Outra função chamada fun2 () é declarada no exemplo da classe.

Se atribuirmos alguns valores na variável 'x' em nossa função principal, temos que escrever

MyExample :: x = 6;

Porque x variável não é declarado dentro da função principal. É o membro do espaço para nome do meu exemplo. Então, temos que escrever:

Namespace :: x;

:: é chamado Operador de resolução de escopo. Temos que escrever namespace :: x = 6 dentro da função principal para acessar a variável x.

Se quisermos chamar a função fun1 (), temos que defini -la. Temos que escrever:

int myExample :: fun1 ()

FUN1 () é o membro do MyExample Namespace, temos que defini -lo. Temos que definir FUN1 () com seu espaço de nome e operador de resolução de escopo (: :).

Se quisermos chamar o fun2 () dentro do exemplo da classe, temos que escrever:

void myExample :: Exemplo :: fun2 ();

Como a função fun2 () é o membro do espaço para nome do meu exemplo, e dentro do exemplo da classe, temos que escrever isso:

usando namespace std;

Dentro da declaração FUN1 () usamos o cout. É um objeto predefinido, então, sua declaração existe dentro de um espaço para nome chamado std. Este espaço para nome já está definido dentro de um arquivo chamado iostream. Temos que incluir este arquivo dentro do nosso programa.

Exemplo de programação 2:

#incluir
usando namespace std;
namespace myExample

int x;
void fun1 ();
Exemplo de classe

público:
Exemplo de void ()

Cout<<“ example is a function :\n ” ;

;

Usando namespace myExample;
void myExample :: fun1 ()

cout<<“ in fun1 ” ;

int main ()

x = 6;
Exemplo ob;
ob.exemplo() ;
fun1 ();

Saída:

Explicação:

Uma definição de namespace pode ser continuada e estendida por vários arquivos (1).

arquivo1.h
namespace myExample int x, y;
void fun1 ();

File2.h
namespace myExample int u, v;
void fun2 ();

Suponha que tenhamos dois arquivos de cabeçalho chamados file1.h e file2.h . No arquivo1.H, usamos um espaço para nome chamado MyExample. Dentro do MyExample estão duas variáveis ​​x e y e uma função chamada fun1 () é declarada.

No arquivo2.H, usamos outro espaço para nome com o mesmo nome chamado MyExample. Dentro do MyExample estão duas variáveis ​​x e y e uma função chamada fun2 () é declarada.

Se incluirmos esses dois arquivos em nosso programa, podemos ter um equívoco de que existem dois namespace diferentes tendo o mesmo nome que existe. Nome conflito pode ocorrer. Na verdade, apenas um espaço para nome do meu exemplo existe no programa. Nesse mesmo namespace, todas as variáveis ​​x, y, u, v e fun1 (), fun2 () são adicionadas. Dois namespace diferente não podem existir aqui.

Conclusão:

Discutindo em detalhes sobre o espaço para nome, chegamos a essa conclusão de que o namespace nos fornece um recurso exclusivo em nosso programa C ++ que é sobre como organizar nossos elementos de declaração, como variáveis, funções, classes de maneira sistemática.

Fonte:

(1) estudo de estudo.com. N.p., Rede. 12 de abril. 2022. https: // www.estudo de estudo.com/cpp/namespace-in-cpp.php