Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Motivo de NÃO utilizar o "using namespace" em arquivos de cabeçalho

Olá!

Tenho dúvidas referentes a aula de número 6 do curso "Avançando com C++". É falado que não devemos utilizar, por exemplo o "using namespace std" em arquivos de cabeçalho, pois todos os strings,cin e cout, pois retiramos o "poder" de definir funções de nomes que já existem em outros namespaces.

Não entendi muito isso. Isso seria por conta de termos dois ou mais namespaces com atributos de mesmo nome?

1 resposta
solução!

Olá.

O que acontece é que quando você especifica exatamente de onde vem cada coisa, você melhora a compreensão do seu código por outras pessoas, já que elas saberão onde buscar a documentação para os símbolos usados. A biblioteca padrão do C++, a std, é bem rica e está cada vez mais recebendo novas implementações. Em um código que usa de diferentes bibliotecas, acaba ficando confuso para saber de onde vem um componente qualquer que você não conhece. Vira uma confusão saber se algo veio da biblioteca padrão ou de alguma biblioteca externa que foi adicionada ao código.

Além disso, há a questão de duplicidade. Por exemplo, duas bibliotecas no seu código podem fazer uso de um símbolo chamado signal. Quando você especifica qual signal está usando, você evita problemas:

mylib::signal("x");
otherlib::signal(60);

Mas sem o uso dos namespaces, fica bem problemático para saber de onde vem cada coisa, e você pode acabar por tentar usar o símbolo errado em certos lugares. O código pode não executar, e fica mais complicado para achar o erro depois.

Não fica "bonito" o uso de std:: no código, além de outros namespaces, mas certamente melhora muito a compreensão e evita problemas lá na frente.