Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 48 — #86<br />
✐<br />
Capítulo 2. Construir y usar objetos<br />
<strong>en</strong>vía la cad<strong>en</strong>a «howdy!» al objeto llamado cout (que es un diminutivo de «console<br />
output» (salida por consola).<br />
De mom<strong>en</strong>to ya hemos visto sufici<strong>en</strong>te sobrecarga de operadores como para poder<br />
empezar. El Capítulo 12 cubre la sobrecarga de operadores con detalle.<br />
2.3.2. Espacios de nombres<br />
Como se m<strong>en</strong>ciona <strong>en</strong> el Capítulo 1, uno de los problemas del l<strong>en</strong>guaje C es que<br />
«nos quedamos sin nombres» para funciones e id<strong>en</strong>tificadores cuando los programas<br />
llegan a ser de cierto tamaño. Por supuesto que realm<strong>en</strong>te no nos quedamos<br />
sin nombres; aunque se hace más difícil p<strong>en</strong>sar <strong>en</strong> nombres nuevos después de un<br />
rato. Y todavía más importante, cuando un programa alcanza cierto tamaño es normal<br />
fragm<strong>en</strong>tarlo <strong>en</strong> trozos más pequeños cada uno de los cuales es mant<strong>en</strong>ido por<br />
difer<strong>en</strong>tes personas o grupos. Como C sólo ti<strong>en</strong>e un ruedo para lidiar con todos los<br />
id<strong>en</strong>tificadores y nombres de función, trae como consecu<strong>en</strong>cia que todos los desarrolladores<br />
deb<strong>en</strong> t<strong>en</strong>er cuidado de no usar accid<strong>en</strong>talm<strong>en</strong>te los mismos nombres <strong>en</strong><br />
situaciones <strong>en</strong> las que pued<strong>en</strong> ponerse <strong>en</strong> conflicto. Esto se convierte <strong>en</strong> una pérdida<br />
de tiempo, se hace tedioso y <strong>en</strong> último término, es más caro.<br />
El <strong>C++</strong> Estándar ti<strong>en</strong>e un mecanismo para impedir estas colisiones: la palabra<br />
reservada namespace (espacio de nombres). Cada conjunto de definiciones de una<br />
librería o programa se «<strong>en</strong>vuelve» <strong>en</strong> un espacio de nombres, y si otra definición<br />
ti<strong>en</strong>e el mismo nombre, pero está <strong>en</strong> otro espacio de nombres, <strong>en</strong>tonces no se produce<br />
colisión.<br />
El espacio de nombres es una herrami<strong>en</strong>ta útil y conv<strong>en</strong>i<strong>en</strong>te, pero su pres<strong>en</strong>cia<br />
implica que debe saber usarla antes de escribir un programa. Si simplem<strong>en</strong>te<br />
escribe un fichero de cabecera y usa algunas funciones u objetos de esa cabecera,<br />
probablem<strong>en</strong>te reciba extraños m<strong>en</strong>sajes cuando compile el programa, debido a que<br />
el compilador no pueda <strong>en</strong>contrar las declaraciones de los elem<strong>en</strong>tos del fichero de<br />
cabecera. Después de ver este m<strong>en</strong>saje un par de veces se le hará familiar su significado<br />
(que es: Usted ha incluido el fichero de cabecera pero todas las declaraciones están<br />
sin un espacio de nombres y no le dijo al compilador que quería usar las declaraciones <strong>en</strong> ese<br />
espacio de nombres).<br />
Hay una palabra reservada que le permite decir «quiero usar las declaraciones<br />
y/o definiciones de este espacio de nombres». Esa palabra reservada, bastante apropiada<br />
por cierto, es using. Todas las librerías de <strong>C++</strong> Estándar están incluidas <strong>en</strong><br />
un único espacio de nombres, que es std (por «standard»). Como este libro usa la<br />
librería estándar casi exclusivam<strong>en</strong>te, verá la sigui<strong>en</strong>te directiva using <strong>en</strong> casi todos<br />
los programas.<br />
using namespace std;<br />
Esto significa que quiere usar todos los elem<strong>en</strong>tos del espacio de nombres llamado<br />
std. Después de esta s<strong>en</strong>t<strong>en</strong>cia, ya no hay que preocuparse de si su compon<strong>en</strong>te<br />
o librería particular pert<strong>en</strong>ece a un espacio de nombres, porque la directiva using<br />
hace que el espacio de nombres esté disponible para todo el fichero donde se escribió<br />
la directiva using.<br />
Exponer todos los elem<strong>en</strong>tos de un espacio de nombres después de que algui<strong>en</strong><br />
se ha molestado <strong>en</strong> ocultarlos, parece contraproduc<strong>en</strong>te, y de hecho, el lector deberá<br />
t<strong>en</strong>er cuidado si considera hacerlo (como apr<strong>en</strong>derá más tarde <strong>en</strong> este libro). Sin<br />
48<br />
✐<br />
✐<br />
✐<br />
✐