Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 373 — #411<br />
✐<br />
12.7. Resum<strong>en</strong><br />
Así que, para la relativam<strong>en</strong>te inocua expresión:<br />
Fee fee = fo;<br />
se invoca el operador de conversión automático de tipo, y se crea un constructor<br />
de copia.<br />
Use la conversión automática de tipos con precaución. Como con toda la sobrecarga<br />
de operadores, es excel<strong>en</strong>te cuando reduce la tarea de codificación significativam<strong>en</strong>te,<br />
pero no vale la p<strong>en</strong>a usarla de forma gratuita.<br />
12.7. Resum<strong>en</strong><br />
El motivo de la exist<strong>en</strong>cia de la sobrecarga de operadores es para aquellas situaciones<br />
<strong>en</strong> la que la vida. No hay nada particularm<strong>en</strong>te mágico <strong>en</strong> ello; los operadores<br />
sobrecargados son solo funciones con nombres divertidos, y el compilador realiza las<br />
invocaciones a esas funciones cuando aparece el patrón adecuado. Pero si la sobrecarga<br />
de operadores no proporciona un b<strong>en</strong>eficio significativo el creador de la clase<br />
o para el usuario de la clase, no complique el asunto añadiéndolos.<br />
12.8. Ejercicios<br />
Las soluciones a los ejercicios se pued<strong>en</strong> <strong>en</strong>contrar <strong>en</strong> el docum<strong>en</strong>to electrónico<br />
titulado «The Thinking in <strong>C++</strong> Annotated Solution Guide», disponible por poco<br />
dinero <strong>en</strong> www.BruceEckel.com.<br />
1. Cree una clase s<strong>en</strong>cilla con un operador sobrecargado ++. Int<strong>en</strong>te llamar a este<br />
operador <strong>en</strong> la forma prefija y postfija y vea qué clase de advert<strong>en</strong>cia obti<strong>en</strong>e<br />
del compilador.<br />
2. Cree una clase s<strong>en</strong>cilla que cont<strong>en</strong>ga un int y sobrecargue el operador + como<br />
un método. Cree también un método print() que tome un ostream& como<br />
un argum<strong>en</strong>to y lo imprima a un ostream&. Pruebe su clase para comprobar<br />
que funciona correctam<strong>en</strong>te.<br />
3. Añada un operador binario - al ejercicio 2 como un método. Demuestre que<br />
puede usar sus objetos <strong>en</strong> expresiones complejas como a + b -c.<br />
4. Añada un operador ++ y otro -- al ejercicio 2, ambos con las versiones prefijas<br />
y postfijas, tales que devuelvan el objeto increm<strong>en</strong>tado o decrem<strong>en</strong>tado.<br />
Asegúrese de que la versión postfija devuelve el valor correcto.<br />
5. Modifique los operadores de increm<strong>en</strong>to y decrem<strong>en</strong>to del ejercicio 4 para que<br />
la versión prefija devuelva una refer<strong>en</strong>cia no const y la postfija devuelva un<br />
objeto const. Muestre que funcionan correctam<strong>en</strong>te y explique porqué esto se<br />
puede hacer <strong>en</strong> la práctica.<br />
6. Cambie la función print() del ejercicio2 para que use el operador sobrecargado<br />