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 190 — #228<br />

✐<br />

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

utilice goto para saltar fuera del del ámbito (goto sigue existi<strong>en</strong>do <strong>en</strong> <strong>C++</strong> por<br />

compatibilidad con C.) Debería notar que un goto no-local, implem<strong>en</strong>tado con las<br />

funciones setjmp y longjmp() de la librería estándar de C, evitan que el destructor<br />

sea invocado. (Eso es la especificación, incluso si su compilador no lo implem<strong>en</strong>ta de<br />

esa manera. Confiar un una característica que no está <strong>en</strong> la especificación significa<br />

que su código no será portable).<br />

A continuación, un ejemplo que demuestra las características de constructores y<br />

destructores que se han mostrado hasta el mom<strong>en</strong>to.<br />

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

// Constructors & destructors<br />

#include <br />

using namespace std;<br />

class Tree {<br />

int height;<br />

public:<br />

Tree(int initialHeight);<br />

~Tree(); // Destructor<br />

void grow(int years);<br />

void printsize();<br />

};<br />

// Constructor<br />

Tree::Tree(int initialHeight) {<br />

height = initialHeight;<br />

}<br />

Tree::~Tree() {<br />

cout

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

Saved successfully!

Ooh no, something went wrong!