Ir ao conteúdo
  • Cadastre-se

josielold

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

1
  1. Namespaces em C++ À medida que o tempo passa, surgem novas classes, novas funções. Quando vamos desenvolver nossas classes / funções, nos preocupamos com o fato do nome ser igual ao nome de uma função / classe de uma biblioteca que poderemos usar um dia. Para resolver o problema de nomes iguais, podemos usar prefixos nos nomes de nossas funções, como mat_soma, ou então, podemos também fazer aqueles nomes ridículos nas funções, como funcao_para_somar_dois_numeros(), o que nem é bom comentar muito. Mas também, podemos resolver este problema de uma maneira mais fácil, usando os namespaces, veja um exemplo: #include <iostream> //chamamos um namespace para uso using namespace std; //declaração de namespace namespace matematica { //início de namespace int soma ( int a, int b ) { return a + b; } int subtrai ( int a, int b ) { return a - b; } } //fim de namespace void main ( void ) { //chamamos a função soma dentro do namespace matematica int somadn = matematica :: soma ( 2 , 4 ) ; //chamamos a função subtrai dentro do namespace matematica int subtraidn = matematica :: subtrai ( 4 , 2 ) ; //imprime resultados obtidos cout <<somadn <<endl <<subtraidn <<endl; } para ficar mais clara essa explicação, faremos dois arquivos cabeçalho, os dois arquivos, conterão duas funções identicas, mas, serão identicas mesmo, em tipo de retorno, nome da função, e tipos de parâmetros e nomes dos parâmetros, para não ter a desculpa que é "sobrecarga de função" a diferença dessas funções, é que elas estão declaradas em namespaces diferentes, em arquivos diferentes. veja: m1.h namespace m1 { int multiplica ( int a, int b ) { return a * b; } } m2.h namespace m2 { int multiplica ( int a, int b ) { return a * b; } } usa.cpp #include <iostream> #include "m1.h" #include "m2.h" void main ( void ) { int multi1 = m1 :: multiplica ( 2 , 4 ) ; int multi2 = m2 :: multiplica ( 85 , 12 ) ; } Como vimos, os namespaces facilitam muito a nossa vida... namespaces também podem ficar aninhados, chamando como: namespace1::namespace2::funcaonamespace2(). #include <iostream> using namespace std; namespace n1 { //início namespace1 void msg1 ( void ) { cout << "msg do namespace1" ; } //fim função msg1 namespace n2 { //início namespace 2 dentro de namespace 1 void msg2 ( void ) { cout << "msg do namespace 2" ; } //fim de função } //fim de namespace 2 } //fim de namespace 1 void main ( void ) { n1 :: msg1 ( ) ; cout <<endl; n1 :: n2 :: msg2 ( ) ; } Outra sintaxe com namespaces Vimos em vários exemplos, a linha: using namespace std; isso serve para associar o nível de aninhamento presente em certo namespace para que os objetos e funções desse namespace possam ser acessíveis diretamente como se estivessem definidos no escopo atual. Neste caso, associamos o namespace std, que tem funções como cout, sin, entre outras. se não empregássemos essa diretiva em nosso código, faríamos: std::cout std::endl std::cin etc. Simplificando tudo, esta diretiva evita de chamarmos nomedonamespace::função / variável / constante. veja o exemplo: #include <iostream> using namespace std; namespace josiel { int idade=14; string eugostode="mulher, programacao"; } using namespace josiel; void main(void) { cout << "minha idade e " << idade << endl; cout << "eu gosto de " << eugostode << endl; } saída do programa acima: minha idade é 14 eu gosto de mulher, programacao Repare que no exemplo acima, acessamos as variáveis idade e eugostode sem ter que precedê-la com qualquer operador de escopo. Vale lembrar, que a diretiva using seguida pela palavra namespace, só tem validade no bloco em que foi declarada, por isso, é sempre bom deixá-la no escopo global. Fim Este foi um tutorial bem simples que abordou, de forma direta e com linguagem fácil, o uso de namespaces em C++. Eu sei que não explico muito bem, não tenho muita didática, mas, acho (e espero) que tenha dado pra entender algo do que eu quis passar. Autor: Josiel A. Santos E-mail para críticas, sugestões, agradecimento, etc: [email protected]

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!