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 211 — #249<br />

✐<br />

7.3. Uniones<br />

La llamada al constructor para la variable stringStash utiliza un segundo argum<strong>en</strong>to;<br />

se presume que conoce algo especial sobre el problema específico que usted<br />

está resolvi<strong>en</strong>do que le permite elegir un tamaño inicial para el Stash.<br />

7.3. Uniones<br />

Como ya ha visto, la única difer<strong>en</strong>cia <strong>en</strong> <strong>C++</strong> <strong>en</strong>tre struct y class es que struct<br />

pone todo por defecto a public y la clase pone todo por defecto a private.<br />

Una struct también puede t<strong>en</strong>er constructores y destructores, como cabía esperar.<br />

Pero resulta que el tipo union también puede t<strong>en</strong>er constructores, destructores, métodos<br />

e incluso controles de acceso. Puede ver de nuevo la utilización y las v<strong>en</strong>tajas<br />

de la sobrecarga de funciones <strong>en</strong> el sigui<strong>en</strong>te ejemplo:<br />

//: C07:UnionClass.cpp<br />

// Unions with constructors and member functions<br />

#include<br />

using namespace std;<br />

union U {<br />

private: // Access control too!<br />

int i;<br />

float f;<br />

public:<br />

U(int a);<br />

U(float b);<br />

~U();<br />

int read_int();<br />

float read_float();<br />

};<br />

U::U(int a) { i = a; }<br />

U::U(float b) { f = b;}<br />

U::~U() { cout

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

Saved successfully!

Ooh no, something went wrong!