[C con Clase] una de using

Steven R. Davidson vze266ft en verizon.net
Mar Nov 21 23:45:05 CET 2006


Hola Rodolfo,

rodolfo rosso paz wrote:
> Antes que nada gracias a Steven y a Joaquin por las respuestas. 21/11/2006
> 

De nada; para eso estamos.

> 
> Hola grupo,
> 
> Los molesto con una consulta pequeñita de using.
> 
> Las siguientes líneas (1 a 6) me permiten usar cualquiera de esas
> funciones o comandos,(no se como se llaman: cout, cin, endl, setw):
> 

'cout' y 'cin' son objetos, mientras que 'endl()' y 'setw()' son funciones.

> 1.  #include <iostream>
> 2.  using std::cout;
> 3.  using std::cin;
> 4.  using std::endl;
> 
> 5.  #include <iomanip>
> 6.  using std::setw;
> 
> Pero las 3 siguientes líneas tambien me permiten usar las mismas
> funciones y sin escribir tanto, alguien me podría decir ¿cual es la
> diferencia? ¿que se gana y se pierde con cada opción?
> 
> 7.   #include <iostream>
> 8.   using namespace std;
> 9.   #include <iomanip>
> 

'using namespace std' permite acceder a todas las entidades bajo el 
espacio con nombre (namespace) 'std'. Si usas 'using' seguido de una 
entidad, entonces sólo puedes usar esa entidad. La directiva 'using' 
simplemente agrega la(s) entidad(es) a usarse al espacio o ámbito 
global. Por eso, no es necesario escribir tanto código relacionado con 
el ámbito de las entidades.

La ventaja, obviamente, es una mayor legibilidad del código y menos 
esfuerzo al escribirlo. La desventaja es que si usas otras bibliotecas 
que también definen entidades con los mismos nombres que en 'std' 
entonces va a haber un conflicto y el resultado va a ser ambiguo desde 
tu punto de vista. Si usas 'using' para una entidad específica, entonces 
seleccionas exactamente lo que quieres dentro de ese ámbito, en lugar de 
indicar "todo".

Si no vas a tener conflictos entre varias bibliotecas y entidades, 
entonces puedes usar 'using namespace std' para agregar todo lo que se 
encuentre en ese ámbito al ámbito global.


Espero haber aclarado la duda.

Steven







Más información sobre la lista de distribución Cconclase