Ir para conteúdo
Fórum Script Brasil
  • 0

Using Namespace Std;


Diego_Bittencourt

Pergunta

8 respostass a esta questão

Posts Recomendados

  • 0

Opa!

Isso é necessário para que você possa usar o ambiente de nomes (namespace) "std", onde "cout" está definido. Os ambientes de nomes são usados para evitar confiltos de escopo, ou seja, quando o escopo de uma variável "penetra" no escopo de outra variável com o mesmo nome da primeira.

Espero ter ajudado.

Até mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Observe o caso abaixo:

#include <cstdlib>
#include <iostream>

using namespace std;

int n = 15;

namespace exemplo {
    int n = 10;
}

int main()
{
    cout << "n global: " << n << endl;
    cout << "n do ambiente exemplo: " << exemplo::n << endl;

    system("PAUSE");
    return 0;
}

Nesse caso temos uma variável global "n" e outra com o mesmo nome definida em um ambiente de nomes. Quando você quiser usar a "n" do escopo global, terá que referenciá-la diretamente; e quando quiser usar a "n" do namespace, é só usar o operador de definição de escopo ( :: ) precedido pelo nome do namespace e sucedido pelo componente deste namespace a ser utilizado. Sendo assm, os conflitos de escopo relacionados à variável "n" são solucionados com o uso de ambientes de nomes.

Deu pra sacar?

Link para o comentário
Compartilhar em outros sites

  • 0

Quando você declara o using namespace std está avisando ao compilador que você quer usar tudo o que está definido no namespace em seu código, dessa forma pode-se acessar os objetos e funções contidos nesse namespace diretamente, sem necessidade de referenciar o nome.

Aqui tem uma boa explicação -> http://www.cprogramming.com/tutorial/namespaces.html

Então se eu por

using namespace std; é o mesmo que using std::cout; ou using std::cin; ou using std:: endl; ?

Colocando o using namespace std você pode acessar os objetos mencionados e todos os outros contidos em std diretamente. Usando a somente using std::cout por exemplo só permite acesso direto ao obejto cout.

'namesapce'(ambientes de nomes) seria o sinônimo de classe?

Não seria, namespaces não precisam ser instanciados, não são objetos, inclusive dentro de um namespace você pode ter classes e objetos já instaciados, até poderíamos associar a idéia de namespace com uma classe estática mas em teoria não são sinônimos.

Obs.: Tópico ressuscitado de 2005 oO

Editado por Myho
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...