Saltar al contenido

¿Cuál es la relación entre iostream y el espacio de nombres estándar?

Este dilema se puede solucionar de diversas formas, sin embargo te mostramos la que en nuestra opinión es la solución más completa.

Solución:

Todas las definiciones de la biblioteca estándar están dentro del espacio de nombres estándar. Es decir, no están definidos en el ámbito global, por lo que para usarlos debe calificarlos de una de las siguientes maneras:

  • std::cout
  • using namespace std
  • using std::cout

Por ejemplo, tomemos esto:

// declarations
int global_variable;

namespace n 
int variable2;

global_variable se puede acceder tal como es:

int x;
x = global_variable;

Pero variable2 no es parte del espacio global, sino parte del namespace n.

int x;
x = variable2; // error variable2 identifier not found.

Así que tienes que usar el nombre completamente calificado:

int x;
x = n::variable2;

Como atajo puedes escribir:

using namespace n;
int x;
x = variable2; // variable2 is searched in current namespace
               // and in all namespaces brought in with using namespace
               // Found ONLY in namespace n -> OK

o

using n::variable2; // this makes any unqualified reference to `variable2`
                    // to be resolved to `n::variable2`
int x;
x = variable2;

En cuanto a los archivos de cabecera, iostream.h fue utilizado por muchos compiladores antes de que existiera un estándar. Cuando el comité intentó estandarizar, decidió hacer que los encabezados de C++ no tuvieran extensión para no romper la compatibilidad con el código existente.

Porque esta línea comienza con #, se denomina “directiva de preprocesador”. El preprocesador lee su programa antes de compilarlo y solo ejecuta aquellas líneas que comienzan con #. El preprocesador configura su código fuente para el compilador.

los #include La directiva hace que el preprocesador incluya el contenido de otro archivo en el programa. los iostream El archivo contiene código que permite que un programa C++ muestre la salida en la pantalla y tome la entrada del teclado. los iostream Los archivos se incluyen en el programa en el punto en que se #include aparece la directiva. los iostream se denomina archivo de cabecera y aparece en la parte superior o cabecera del programa.

using namespace std;

C++ usa espacios de nombres para organizar nombres o entidades de programas. Declara que el programa estará evaluando entidades que forman parte del namespace llamado “estándar”. Cada nombre creado por el iostream el archivo es parte de eso namespace.

1.Si incluyo el iostream biblioteca, ¿por qué es un namespace necesario para encontrar cout? hay otro cout en algún lugar que podría causar un conflicto de nombres?

Es necesario porque el estándar C++ requiere que cout estar dentro de la std espacio de nombres Ahí pudo ser un choque coutpero no en la biblioteca estándar (por ejemplo, su propio código o alguna biblioteca de terceros).

1.Qué fue exactamente iostream.h antes de que se cambiara a iostream?

Podría ser cualquier cosa, porque no es parte del estándar, pero era el nombre de un encabezado previo a la estandarización que formó la base para iostream. Por lo general, declaró todos los nombres en el espacio de nombres global, por lo que es probable que el ejemplo que está viendo se haya escrito antes de la estandarización.

2. Hizo namespace participar en este cambio?

Esta pregunta no está clara. la palabra clave namespace puede usarse dentro de implementaciones, y se usa para declarar y definir datos, funciones, tipos, etc. dentro de un espacio de nombres. asi que tenia algunos parte de este cambio.

namespace foo

  void bar();  // declares foo::bar

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *