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

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

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

Saved successfully!

Ooh no, something went wrong!