Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 282 — #320<br />
✐<br />
Capítulo 10. Control de nombres<br />
//: C10:MyLib.cpp<br />
namespace MyLib {<br />
// Declarations<br />
}<br />
int main() {} ///:~<br />
Ese código crea un nuevo espacio de nombres que conti<strong>en</strong>e las declaraciones incluidas<br />
<strong>en</strong>tre las llaves. De todas formas, exist<strong>en</strong> difer<strong>en</strong>cias significativas <strong>en</strong>tre class,<br />
struct, <strong>en</strong>um y union:<br />
Una definición con namespace solam<strong>en</strong>te puede aparecer <strong>en</strong> un rango global<br />
de visibilidad o anidado d<strong>en</strong>tro de otro namespace.<br />
No es necesario un punto y coma tras la llave de cierre para finalizar la definición<br />
de namespace.<br />
Una definición namespace puede ser "continuada" <strong>en</strong> múltiples archivos de<br />
cabecera utilizando una sintaxis que, para una clase, parecería ser la de una<br />
redefinición:<br />
//: C10:Header1.h<br />
#ifndef HEADER1_H<br />
#define HEADER1_H<br />
namespace MyLib {<br />
extern int x;<br />
void f();<br />
// ...<br />
}<br />
#<strong>en</strong>dif // HEADER1_H ///:~<br />
El posible crear alias de un namespace de forma que no hace falta que teclee un<br />
<strong>en</strong>revesado nombre creado por algún frabricante de librerías:<br />
//: C10:BobsSuperDuperLibrary.cpp<br />
namespace BobsSuperDuperLibrary {<br />
class Widget { /* ... */ };<br />
class Poppit { /* ... */ };<br />
// ...<br />
}<br />
// Too much to type! I’ll alias it:<br />
namespace Bob = BobsSuperDuperLibrary;<br />
int main() {} ///:~<br />
No puede crear una instancia de un namespace tal y como puede hacer con una<br />
clase.<br />
Espacios de nombres sin nombre<br />
Cada unidad de traducción conti<strong>en</strong>e un espacio de nombres sin nombre al que<br />
puede referirse escribi<strong>en</strong>do «namespace» sin ningún id<strong>en</strong>tificador.<br />
282<br />
✐<br />
✐<br />
✐<br />
✐