I'foi dito por outros que escrever use namespace std;
em código está errado, e que eu deveria utilizar std::cout
e std::cin
diretamente em seu lugar.
Porque é que "usar namespace std" é considerado uma má prática? É ineficiente ou corre o risco de declarar variáveis ambíguas (variáveis que compartilham o mesmo nome de uma função no espaço de nomes `std')? Isso afeta o desempenho?
Isto não está de todo relacionado com o desempenho. Mas considere o seguinte: você está usando duas bibliotecas chamadas Foo e Bar:
using namespace foo;
using namespace bar;
Tudo funciona bem, e você pode chamar Blah()
de Foo e Quux()
de Bar sem problemas. Mas um dia você atualiza para uma nova versão do Foo 2.0, que agora oferece uma função chamada Quux()
. Agora você tem um conflito: Ambos Foo 2.0 e Bar importam Quux()
para o seu namespace global. Isto vai exigir algum esforço para corrigir, especialmente se os parâmetros da função coincidirem.
Se você tivesse utilizado foo::Blah()
e bar::Quux()
, então a introdução de foo::Quux()
teria sido um não-evento.
Outra razão é a surpresa.
Se eu vejo cout << blah
, em vez de std::cout << blah
penso: O que é este cout
? É o cout
normal? É algo especial?
É tudo uma questão de gerir a complexidade. Usar o namespace vai puxar coisas que você não quer, e assim possivelmente tornar mais difícil a depuração (eu digo possivelmente). Usando std::: em todo lugar é mais difícil de ler (mais texto e tudo mais).
Cavalos para cursos - administre a sua complexidade da melhor forma que você pode e se sente capaz.