Sdílet prostřednictvím


namespace – deklarace

Deklarace namespace identifikuje a přiřazuje jedinečný název uživatelem deklarovanému oboru názvů.

namespace identifier

Poznámky

Obory názvů se používají k vyřešení kolize názvů v rozsáhlých programech a knihovnách.Programátoři mohou obory názvů použít při vývoji nových softwarových komponent a knihoven bez konfliktů s názvy v existujících komponentách.

Příklad:

// namespace_declaration1.cpp
namespace X
{
   int i;
   double j;
}
int main()
{
   X::i++;
}

Syntaxe definice oboru názvů je:

namespace identifier
{
   [ declaration-list ]
}

Definice-oboru-názvů mohou být vnořeny v jiné definici-oboru-názvů.Každá definice-oboru-názvů musí být uvedena v rozsahu souboru nebo ihned v rámci jiné definice-oboru-názvů.

Příklad:

// namespace_declaration2.cpp
// C2870 expected
namespace A
{
   int j = 3;
   int f(int k);
}

namespace Outer
{
   int n = 6;
   int func(int num);

   namespace Inner
   {
      float f = 9.993;
   }
}

int main()
{
   namespace local   // C2870: not at global scope
   {
   }
}

Na rozdíl od ostatních oblastí deklarace lze definice oboru názvů rozdělit přes několik částí jedné jednotky převodu.

// namespace_declaration3.cpp
namespace A
{
   // declare namespace A variables
   int i;
   int j;
}

namespace B
{
}

namespace A
{
   // declare namespace A functions
   void func(void);
   int int_func(int i);
}

int main()
{
}

Pokud obor názvů pokračuje tímto způsobem, po jeho počáteční definici, nazývá se toto pokračování rozšířená definice oboru názvů. Původní definice daného oboru názvů je označována jako původní definice oboru názvů.

Použití tohoto zápisu může být s delšími názvy nebo v rozsáhlých programech těžkopádné.Deklarace using, direktiva using a aliasy oboru názvů poskytují jednodušší způsob odkazování na členy oboru názvů.

Deklarace namespace, zda zahrnuje nový obor názvů, nepojmenovaný obor názvů nebo rozšířenou definici oboru názvů, musí mít tělo oboru názvů uzavřené do složených závorek.Příkaz

namespace X;

je chyba syntaxe.Příkaz

namespace X{};

není chyba syntaxe, ale nemá význam.

Další obecné informace naleznete v tématu Obory názvů.

Identifikátor v původní definici oboru názvů musí být jedinečný v deklarativní regionu, ve kterém se používá.Identifikátor je název oboru názvů a je použit pro odkazování na své členy.

Deklarativní oblast definice oboru názvů je její tělo.Toto tělo musí být uzavřeno do složených závorek ({}) a může obsahovat deklarace nebo definice proměnných, funkcí, objektů, šablon a vnořených oborů názvů.Deklarace v seznamu-deklarací se považují za členy tohoto oboru názvů.Název každého člena oboru názvů je automaticky kvalifikován jeho názvem oboru názvů a operátorem rozlišení rozsahu.

Viz také

Referenční dokumentace

Obory názvů (C++)

Klíčová slova jazyka C++

Nepojmenované obory názvů