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 196 — #234<br />

✐<br />

Capítulo 6. Inicialización y limpieza<br />

Dado que inflate() es privado, el único modo <strong>en</strong> que require() podría fallar<br />

sería si uno de los otros miembros pasara accid<strong>en</strong>talm<strong>en</strong>te un valor incorrecto a<br />

inflate(). Si está seguro de que eso no puede pasar, debería considerar eliminar<br />

el require(), pero debería t<strong>en</strong>er <strong>en</strong> m<strong>en</strong>te que hasta que la clase sea estable, siempre<br />

existe la posibilidad de que el código nuevo añadido a la clase podría provocar<br />

errores. El coste de require() es bajo (y podría ser eliminado automáticam<strong>en</strong>te por<br />

el preprocesador) mi<strong>en</strong>tras que la robustez del código es alta.<br />

Fijese cómo <strong>en</strong> el sigui<strong>en</strong>te programa de prueba la definición de los objetos Stash<br />

aparece justo antes de necesitarse, y cómo la inicialización aparece como parte<br />

de la definición, <strong>en</strong> la lista de argum<strong>en</strong>tos del constructor.<br />

//: C06:Stash2Test.cpp<br />

//{L} Stash2<br />

// Constructors & destructors<br />

#include "Stash2.h"<br />

#include "../require.h"<br />

#include <br />

#include <br />

#include <br />

using namespace std;<br />

int main() {<br />

Stash intStash(sizeof(int));<br />

for(int i = 0; i < 100; i++)<br />

intStash.add(&i);<br />

for(int j = 0; j < intStash.count(); j++)<br />

cout

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

Saved successfully!

Ooh no, something went wrong!