Latest web development tutorials

C ++ Namespace

eine Situation vorstellen, wenn eine Klasse gibt Zara zwei Studenten, um zwischen ihnen zu unterscheiden eindeutig benannt ist, verwenden wir den Namen draußen, hatte einige zusätzliche Informationen, wie ihre Heimatadresse oder ihre Eltern zu verwenden, Name usw.

Die gleiche Situation tritt auch in der C ++ Anwendung. Zum Beispiel könnten Sie eine Funktion namens xyz () schreiben, in einer anderen Bibliothek gibt es auch eine gleiche Funktion xyz (). Somit bestimmen kann der Compiler nicht, was man einen xyz () Funktion verwenden.

Daher entwickelt die Einführung des Konzepts derNamensräume, die oben genannten Probleme zu lösen, kann es als zusätzliche Information verwendet werden , um verschiedene Bibliotheken mit den gleichen Namen Funktionen, Klassen, Variablen zu unterscheiden, und so weiter.Mit Namensraum, der Kontext definiert ist. Im Wesentlichen ist der Namensraum die Definition eines Bereichs.

definieren von Namespaces

Definierte Schlüsselwort namespaceNamensraum, gefolgt von dem Namen des Namespace, wie folgt:

namespace namespace_name {
   // 代码声明
}

Um eine Funktion oder eine Variable mit einem Namensraum zu nennen, müssen Sie es mit dem Namen des Namensraums vorausgehen, wie folgt:

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

Mal sehen, wie die Namespace-Definition für das Unternehmen und andere Variable oder Funktion:

#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;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Inside first_space
Inside second_space

Unter Verwendung der Anweisung

Sie können dieVerwendung von Namespace- Direktive verwenden, so dass , wenn Sie nicht einen Namespace mit dem Präfix Namespace - Namen verwenden können. Diese teilt dem Compiler mit, dass der nachfolgende Code den angegebenen Namespace-Namen verwenden.

#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;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Inside first_space

mit Anweisungen können auch die Namespace-spezifischen Elemente zu spezifizieren verwendet werden. wenn Sie zum Beispiel beabsichtigen std-Namespace cout Abschnitt zu verwenden, können Sie die folgende Anweisung:

using std::cout;

Nachfolgende Code bei der Verwendung von cout Sie nicht den Namespace - Namen als Präfix hinzufügen können, aber die Namensraumstd andere Elemente müssen noch die Namespace - Namen als Präfix hinzuzufügen, wie folgt:

#include <iostream>
using std::cout;

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

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

std::endl is used with std!

Namemittels Anweisungen eingeführt folgen Sie den normalen Umfang Regeln.Namen voneiner using - Direktive zunächst sichtbar , bis zum Ende des Bereichs.In diesem Fall ist der gleiche Name außerhalb des Geltungsbereichs der Definition von Entitäten ausgeblendet.

Diskontinuierliche Namespace

Namespace kann in verschiedenen Teilen definiert werden, so dass der Namespace besteht aus mehreren Teilen getrennt Zusammensetzung definiert. Verschiedene Komponenten eines Namespace kann über mehrere Dateien verteilt werden.

Deshalb, wenn der Namespace Teil der Notwendigkeit, einen Namen in einer anderen Datei definiert zu beantragen, müssen Sie noch den Namen zu erklären. Die folgende Namespace-Definition können einen neuen Namensraum zu definieren, ist es für einen vorhandenen Namespace können neue Elemente hinzuzufügen:

namespace namespace_name {
   // 代码声明
}

Verschachtelte Namespaces

Namespaces können verschachtelt werden, können Sie einen anderen Namespace in einem Namensraum zu definieren, wie folgt:

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

Sie können die Operator :: verwenden, um die verschachtelten Namespace-Member zuzugreifen:

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

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

In der obigen Aussage, wenn Sie mit namespace_name1, dann innerhalb des Bereichs von Elementen namespace_name2 auch wie folgt erhältlich:

#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;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Inside second_space