Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 113 — #151<br />
✐<br />
3.8. Creación de tipos compuestos<br />
parece a la declaración de un struct.<br />
Un tipo de datos <strong>en</strong>umerado es útil cuando se quiere poder seguir la pista de<br />
alguna característica:<br />
//: C03:Enum.cpp<br />
// Keeping track of shapes<br />
<strong>en</strong>um ShapeType {<br />
circle,<br />
square,<br />
rectangle<br />
}; // Must <strong>en</strong>d with a semicolon like a struct<br />
int main() {<br />
ShapeType shape = circle;<br />
// Activities here....<br />
// Now do something based on what the shape is:<br />
switch(shape) {<br />
case circle: /* circle stuff */ break;<br />
case square: /* square stuff */ break;<br />
}<br />
} ///:~<br />
case rectangle:<br />
/* rectangle stuff */ break;<br />
shape es una variable del tipo de datos <strong>en</strong>umerado ShapeType, y su valor se<br />
compara con el valor <strong>en</strong> la <strong>en</strong>umeración. Ya que shape es realm<strong>en</strong>te un int, puede<br />
albergar cualquier valor que corresponda a int (incluy<strong>en</strong>do un número negativo).<br />
También se puede comparar una variable int con un valor de una <strong>en</strong>umeración.<br />
Se ha de t<strong>en</strong>er <strong>en</strong> cu<strong>en</strong>ta que el ejemplo anterior de intercambiar los tipos ti<strong>en</strong>de<br />
a ser una manera problemática de programar. <strong>C++</strong> ti<strong>en</strong>e un modo mucho mejor de<br />
codificar este tipo de cosas, cuya explicación se pospondrá para mucho mas adelante<br />
<strong>en</strong> este libro.<br />
Si el modo <strong>en</strong> que el compilador asigna los valores no es de su agrado, puede<br />
hacerlo manualm<strong>en</strong>te, como sigue:<br />
<strong>en</strong>um ShapeType {<br />
circle = 10, square = 20, rectangle = 50<br />
};<br />
Si da valores a algunos nombres y a otros no, el compilador utilizará el sigui<strong>en</strong>te<br />
valor <strong>en</strong>tero. Por ejemplo,<br />
<strong>en</strong>um snap { crackle = 25, pop };<br />
El compilador le da a pop el valor 26.<br />
Es fácil comprobar que el código es más legible cuando se utilizan tipos de datos<br />
<strong>en</strong>umerados. No obstante, <strong>en</strong> cierto grado esto sigue si<strong>en</strong>do un int<strong>en</strong>to (<strong>en</strong> C) de<br />
lograr las cosas que se pued<strong>en</strong> lograr con una class <strong>en</strong> <strong>C++</strong>, y por eso verá que<br />
<strong>en</strong>um se utiliza m<strong>en</strong>os <strong>en</strong> <strong>C++</strong>.<br />
113<br />
✐<br />
✐<br />
✐<br />
✐