53 votos

Usos de los sin nombre de espacio de nombres en C++

Cuando un uso sin nombre de espacio de nombres en C++ ? Es mejor en todo sentido que una posición libre de la función? También, deben ser utilizados sólo en el archivo de origen y no en el archivo de encabezado?

47voto

T.E.D. Puntos 26829

De acuerdo a Stroustrup, se debe utilizar en lugares donde en el viejo C que le han hecho static globales. La idea es que los productos en cuestión pueden ser "global" para el archivo de origen que se encuentran, pero no contaminar el espacio de nombres de cualquier otra fuente de los archivos en su compilación.

En otras palabras, no debe ser la creación de static globales en C++. Usted debe utilizar espacios de nombres sin nombre en su lugar.

He encontrado algunas situaciones en las que son útiles en los archivos de encabezado, pero que deben ser raras. Sobre todo creo que para declarar arrojar excepciones. En ese caso las definiciones en cuestión será global para todo lo que #includes que de encabezado, pero no para cosas que no.

21voto

sharptooth Puntos 93379

Sin nombre de espacio de nombres privado a la unidad de traducción, y esto puede ser utilizado para proteger las variables y funciones globales con el mismo nombre que ocurren en diferentes unidades de traducción, de modo que no hay enlace surgen los conflictos.

Por ejemplo, usted necesita una clase que va a ser definido en una .archivo cpp y utilizados únicamente dentro de ese archivo. Que quieras llamarlo CModuleLock. Si no es en un espacio de nombres sin nombre y algunos otros .archivo cpp accidentalmente tiene otra clase CModuleLock no en un espacio de nombres sin nombre que usted no será capaz de vincular su programa.

6voto

Jeff Foster Puntos 22175

Se utiliza para el nombre de la clandestinidad. Cada espacio de nombres sin nombre es único. El enlace aquí se explica en más detalle. Típicamente, se utiliza en un archivo de código fuente para ocultar funciones que sólo debe tener vinculación interna (por ejemplo, no expuesto al mundo exterior).

1voto

fbafelipe Puntos 3000

Sin nombre los espacios de nombres son los "C++ versión" de estática global de variables y funciones. Tenga en cuenta que también puede utilizar un espacio de nombres sin nombre para las clases.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X