[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