Latest web development tutorials

namespace C ++

Imagine uma situação em que há uma classe chamada Zara dois alunos, a fim de distinguir claramente entre eles, usamos o nome de fora, tinha que usar algumas informações adicionais, como o seu endereço de casa ou os seus pais nome, etc.

A mesma situação também aparece no aplicativo de C ++. Por exemplo, você pode escrever uma função xyz chamado (), em outra biblioteca disponíveis, há também uma mesma função xyz (). Assim, o compilador não pode determinar o que você estiver usando uma função xyz ().

Portanto, a introdução da noção deespaços de nomes, concebido para resolver os problemas acima, ele pode ser usado como informação adicional para distinguir diferentes bibliotecas com as mesmas funções, nomes de classe, variáveis, e assim por diante.Usando namespace que é definido contexto. Em essência, o espaço de nomes é a definição de um intervalo.

definindo namespaces

Definido namespace palavra-chavenamespace, seguido pelo nome do namespace, da seguinte forma:

namespace namespace_name {
   // 代码声明
}

A fim de chamar uma função ou variável com um namespace, você precisa precedê-lo com o nome do namespace, da seguinte forma:

name::code;  // code 可以是变量或函数

Vamos ver como a definição namespace para a entidade e outra função ou variável:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main ()
{
 
   // 调用第一个命名空间中的函数
   first_space::func();
   
   // 调用第二个命名空间中的函数
   second_space::func(); 

   return 0;
}

Quando o código acima é compilado e executado, ele produz os seguintes resultados:

Inside first_space
Inside second_space

usando instrução

Você pode usar a diretivausando namespace, de modo que quando você não pode usar um espaço de nomes prefixados com o nome do namespace.Esta directiva diz ao compilador que o código subseqüente usará o nome namespace especificado.

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
 
   // 调用第一个命名空间中的函数
   func();
   
   return 0;
}

Quando o código acima é compilado e executado, ele produz os seguintes resultados:

Inside first_space

também pode ser usado usando instruções para especificar os itens específicos de namespace. Por exemplo, se você só pretende usar seção de namespace cout std, você pode usar a seguinte declaração:

using std::cout;

código subseqüente ao usar cout você não pode adicionar o nome do namespace como um prefixo, mas osstd namespace outros itens ainda precisa adicionar o nome do namespace como um prefixo, como segue:

#include <iostream>
using std::cout;

int main ()
{
 
   cout << "std::endl is used with std!" << std::endl;
   
   return 0;
}

Quando o código acima é compilado e executado, ele produz os seguintes resultados:

std::endl is used with std!

Nomeusando instruções introduzidas seguir as regras de escopo normais.Nomes deuma directiva utilizandoinicialmente visível até o final do intervalo. Neste caso, o mesmo nome fora do âmbito da definição de entidades é escondido.

namespace descontínua

Namespace pode ser definida de várias partes diferentes, de modo que o espaço de nomes é composto de várias partes composição separadamente definidos. Vários componentes de um namespace pode ser espalhado em vários arquivos.

Portanto, se a parte namespace da necessidade de solicitar um nome definido em outro arquivo, você ainda precisa declarar o nome. A seguinte definição namespace pode definir um novo espaço de nomes, pode ser para um namespace existente para adicionar novos elementos:

namespace namespace_name {
   // 代码声明
}

namespaces aninhados

Namespaces podem ser aninhados, você pode definir outro namespace em um namespace, da seguinte forma:

namespace namespace_name1 {
   // 代码声明
   namespace namespace_name2 {
      // 代码声明
   }
}

Você pode usar o operador :: para acessar os membros espaço de nomes aninhados:

// 访问 namespace_name2 中的成员
using namespace namespace_name1::namespace_name2;

// 访问 namespace:name1 中的成员
using namespace namespace_name1;

Na declaração acima, se você estiver usando namespace_name1, em seguida, dentro do intervalo de elementos namespace_name2 também disponível como segue:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
   // 第二个命名空间
   namespace second_space{
      void func(){
         cout << "Inside second_space" << endl;
      }
   }
}
using namespace first_space::second_space;
int main ()
{
 
   // 调用第二个命名空间中的函数
   func();
   
   return 0;
}

Quando o código acima é compilado e executado, ele produz os seguintes resultados:

Inside second_space