Para ampliar un poco en lo que dijo Kyle:
espacios de nombres no son más que una forma sintáctica para el usuario y el compilador de poner nombres en diferentes cubos. Existen para permitirle usar nombres más comunes y apropiados para las cosas sin tener que preocuparse por los conflictos con otra persona. std::vector
es un tipo diferente de una clase matemática vector
. Pueden compartir el mismo nombre siempre que estén en diferentes espacios de nombres.
En lo que respecta al compilador, una función en un espacio de nombres no es diferente de una función en cualquier otro lado. Simplemente tiene un nombre gracioso. De hecho, a los compiladores se les permite la libertad de hacer lo que se llama "creación de nombres": cuando el compilador ve std::vector<int>
, realmente puede convertir eso en algo como __std~~vector~t~~int32_t~~__
o lo que sea. El algoritmo de manipulación se elige para que ningún nombre definido por el usuario en el espacio de nombre global pueda coincidir con el nombre utilizado por el manipulador del espacio de nombres. Por lo tanto, todos los nombres con ámbito de espacio de nombres están separados de los nombres en otros espacios de nombres, incluso el global.
Básicamente, el primer paso en el proceso de compilación es efectivamente eliminar espacios de nombres. Por lo tanto, los pasos posteriores del compilador no tienen ni idea de en qué espacio de nombres está incluido algo. Por lo tanto, no pueden generar código a partir de él. Y así, los espacios de nombres no pueden tener ningún efecto en la velocidad de ejecución del código compilado.
Carpetas ... no se puede posiblemente materia. Después de la compilación, obtienes un único ejecutable, biblioteca o DLL. Si un compilador alguna vez hizo cualquier generación de código basada en la ubicación de los archivos fuente, sería recomendable evitar ese compilador como la plaga. Los escritores del compilador tendrían que estar controlando a sus usuarios para que eso suceda.
Muy sencillo gracias :-) –
No es 100% correcto que los espacios de nombres no afecten el rendimiento. Usar un espacio de nombre anónimo puede mejorar el rendimiento en tu código. Ver http://stackoverflow.com/a/25565298/351771 – xioxox