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 283 — #321<br />
✐<br />
10.2. Espacios de nombres<br />
Los nombres <strong>en</strong> este espacio están disponibles automáticam<strong>en</strong>te <strong>en</strong> esa unidad<br />
de traducción sin cualificación. Se garantiza que un espacio sin nombre es único<br />
para cada unidad de traducción. Si usted asigna nombres locales <strong>en</strong> un espacio de<br />
nombres no necesitará darles <strong>en</strong>lazado interno con static.<br />
En <strong>C++</strong> es preferible utilizar espacios de nombres sin nombre que estáticos a fichero.<br />
Amigas<br />
Es posible añadir una declaración tipo fri<strong>en</strong>d d<strong>en</strong>tro de un espacio de nombres<br />
incluyéndola d<strong>en</strong>tro de una clase:<br />
//: C10:Fri<strong>en</strong>dInjection.cpp<br />
namespace Me {<br />
class Us {<br />
//...<br />
fri<strong>en</strong>d void you();<br />
};<br />
}<br />
int main() {} ///:~<br />
Ahora la función you() es un miembro del espacio de nombres Me.<br />
Si introduce una declaración tipo fri<strong>en</strong>d <strong>en</strong> una clase d<strong>en</strong>tro del espacio de<br />
nombres global, dicha declaración se inyecta globalm<strong>en</strong>te.<br />
10.2.2. Cómo usar un espacio de nombres<br />
Puede referirse a un nombre d<strong>en</strong>tro de un espacio de nombres de tres maneras<br />
difer<strong>en</strong>tes: especificando el nombre utilizando el operador de resolución de ámbito,<br />
con una directiva using que introduzca todos los nombres <strong>en</strong> el espacio de nombres<br />
o mediante una declaración using para introducir nombres de uno <strong>en</strong> uno.<br />
Resolución del ámbito<br />
Cualquier nombre <strong>en</strong> un espacio de nombres puede ser explícitam<strong>en</strong>te especificado<br />
utilizando el operador de resolución de ámbito de la misma forma que puede<br />
referirse a los nombres d<strong>en</strong>tro de una clase:<br />
//: C10:ScopeResolution.cpp<br />
namespace X {<br />
class Y {<br />
static int i;<br />
public:<br />
void f();<br />
};<br />
class Z;<br />
void func();<br />
}<br />
int X::Y::i = 9;<br />
class X::Z {<br />
int u, v, w;<br />
public:<br />
Z(int i);<br />
283<br />
✐<br />
✐<br />
✐<br />
✐