Condividi tramite


Spazi dei nomi (C++)

Il linguaggio C++ fornisce un singolo spazio dei nomi globale.Ciò può comportare problemi con l'incompatibilità globali del nome.Ad esempio, considerare questi due file di intestazione C++:

char func(char);
class String { ... };

// somelib.h
class String { ... };

Con queste definizioni, è impossibile utilizzare entrambi i file di intestazione in un unico programma; String le classi è scontreranno.

Uno spazio dei nomi è un'area dichiarativa che associa un identificatore aggiuntivo a tutti i nomi dichiarati in.L'identificatore aggiuntivo fa meno probabile che un nome non in conflitto con i nomi dichiarati nel programma.È possibile utilizzare lo stesso nome negli spazi dei nomi distinti senza conflitti anche se i nomi vengono visualizzati nella stessa unità di conversione.Se vengono visualizzati negli spazi dei nomi distinti, ogni nome verrà univoco a causa di aggiunta dell'identificatore dello spazio dei nomi.Di seguito è riportato un esempio:

namespace one {
   char func(char);
   class String { ... };
}

// somelib.h
namespace SomeLib {
   class String { ... };
}

A questo punto i nomi di classe non è scontreranno perché diventano one::String e SomeLib::String, rispettivamente.

C++ non consente i nomi composti per gli spazi dei nomi.

// pluslang_namespace.cpp
// compile with: /c
// OK
namespace a {
   namespace b {
      int i;
   }
}

// not allowed
namespace c::d {   // C2653
   int i;
}

Le dichiarazioni in file di un'unità di conversione, all'esterno di tutti gli spazi dei nomi, sono ancora membri dello spazio dei nomi globale.

Scegliere l'argomento su cui visualizzare maggiori informazioni

Vedere anche

Riferimenti

Dichiarazioni