é errado usar o "using namespace std" ? [RESOLVIDO]

1. é errado usar o "using namespace std" ? [RESOLVIDO]

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 15/02/2018 - 16:31h

Eu ouvi falar que é uma má pratica da programação usar o "using namespace std" em arquivos .H
Isso é verdade ?
Porque se deve Evitar ?
E em arquivos .cpp ?
Isso vale para todos os sistemas operacionais ?
Será que o correto é usar o "std::" em tudo ?


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/02/2018 - 19:34h

silas333 escreveu:

Eu ouvi falar que é uma má pratica da programação usar o "using namespace std" em arquivos .H
Isso é verdade ?


É verdade.

Porque se deve Evitar ?


Porque se você tiver essa linha dentro de um cabeçalho, você embute essa diretiva necessariamente em todo arquivo que incluir esse cabeçalho, limitando o poder de escolha do seu usuário.

Além disso, é um princípio de organização razoavelmente bem difundido e aceito que é bom limitar a visibilidade de símbolos aos locais em que eles são necessários. Isso tem muitas aplicações, inclusive a de evitar conflitos entre nomes relativamente comuns (por exemplo: “string”, “regex” etc.), especialmente em casos em que acontecem misturas entre módulos compilados em C e módulos compilados em C++.

E em arquivos .cpp ?


Arquivos que contêm implementações (não apenas com sufixo “.cpp”, mas também outros, como “.cc” ou “.C”) normalmente são alvos diretos de compilação, e não são incluídos por outros arquivos. Nesses casos, o risco de expor uma quantidade muito grande de símbolos fica reduzido a apenas aqueles arquivos finais, sem espalhar-se.

No entanto, existem alguns casos em que implementações podem ser incluídas por outros arquivos, e dentre esses se destacam os de implementações de templates (que comumente têm extensão “.tcc”). Nesses casos, também não é bom impor a diretiva dentro do arquivo a ser incluído.

Isso vale para todos os sistemas operacionais ?


Sim. Não tem nada a ver com S.O., mas sim com a linguagem.

Será que o correto é usar o "std::" em tudo ?


Não. Há casos em que não se agrega valor, mas apenas se escreve mais. Como tudo na vida, é uma questão de usar o bom senso.

3. obrigado

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 17/02/2018 - 16:22h

Muito interessante, obrigado. Vou marcar como melhor resposta (E unica tbm né kkkk)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts