13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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 />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!