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 291 — #329<br />
✐<br />
10.3. Miembros estáticos <strong>en</strong> <strong>C++</strong><br />
// This doesn’t work, although<br />
// you might want it to:<br />
//! static const X x(100);<br />
// Both const and non-const static class<br />
// objects must be initialized externally:<br />
static X x2;<br />
static X xTable2[];<br />
static const X x3;<br />
static const X xTable3[];<br />
};<br />
X Stat::x2(100);<br />
X Stat::xTable2[] = {<br />
X(1), X(2), X(3), X(4)<br />
};<br />
const X Stat::x3(100);<br />
const X Stat::xTable3[] = {<br />
X(1), X(2), X(3), X(4)<br />
};<br />
int main() { Stat v; } ///:~<br />
La inicialización de listas estáticas de objetos tanto constantes como no constantes<br />
debe realizarse de la misma manera, sigui<strong>en</strong>do la típica sintaxis de definición<br />
estática.<br />
10.3.2. Clases anidadas y locales<br />
Puede colocar fácilm<strong>en</strong>te atributos estáticos <strong>en</strong> clases que están anidadas d<strong>en</strong>tro<br />
de otras clases. La definición de tales miembros es intuitiva y obvia (tan sólo utiliza<br />
otro nivel de resolución de ámbito). No obstante, no puede t<strong>en</strong>er atributos estáticos<br />
d<strong>en</strong>tro de clases locales (una clase local es una clase definida d<strong>en</strong>tro de una función).<br />
Por tanto,<br />
//: C10:Local.cpp<br />
// Static members & local classes<br />
#include <br />
using namespace std;<br />
// Nested class CAN have static data members:<br />
class Outer {<br />
class Inner {<br />
static int i; // OK<br />
};<br />
};<br />
int Outer::Inner::i = 47;<br />
// Local class cannot have static data members:<br />
void f() {<br />
class Local {<br />
public:<br />
291<br />
✐<br />
✐<br />
✐<br />
✐