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 248 — #286<br />
✐<br />
Capítulo 8. Constantes<br />
6. Cree un vector de caracteres constante, después int<strong>en</strong>te cambiar uno de los<br />
caracteres.<br />
7. Cree una declaración de constante extern <strong>en</strong> un fichero y ponga un main-<br />
() <strong>en</strong> el que se imprima el valor de dicha constante. Cree una definición de<br />
constante extern <strong>en</strong> un segundo fichero, compile y <strong>en</strong>lace los dos ficheros.<br />
8. Defina dos punteros a const long utilizando las dos formas de definición. Apunte<br />
con uno de ellos a un vector de long. Demuestre que se puede increm<strong>en</strong>tar<br />
o decrem<strong>en</strong>tar el puntero, pero no se puede cambiar el valor de lo que apunta.<br />
9. Defina un puntero constante a double, y apunte con él a un vector de double.<br />
Demuestre que se puede cambiar lo que apunta el puntero pero no se puede<br />
increm<strong>en</strong>tar ni decrem<strong>en</strong>tar el puntero.<br />
10. Defina un puntero constante a objeto constante. Pruebe que solam<strong>en</strong>te se puede<br />
leer el valor de lo que apunta el puntero, pero no se puede cambiar el puntero<br />
ni lo que apunta.<br />
11. Elimine el com<strong>en</strong>tario de la linea errónea <strong>en</strong> PointerAssignemt.cpp para<br />
ver qué m<strong>en</strong>saje de error muestra el compilador.<br />
12. Cree un literal de cad<strong>en</strong>a y un puntero que apunte al comi<strong>en</strong>zo del literal. Ahora,<br />
use el puntero para modificar los elem<strong>en</strong>tos del vector, ¿Informa el compilador<br />
de algún error ¿Debería Si no lo hace, ¿Porqué pi<strong>en</strong>sa que puede ser<br />
13. Cree una función que tome un argum<strong>en</strong>to por valor como constante, después<br />
int<strong>en</strong>te cambiar el argum<strong>en</strong>to <strong>en</strong> el cuerpo de la función.<br />
14. Cree una función que tome un float por valor. D<strong>en</strong>tro de la función vincule<br />
el argum<strong>en</strong>to a un const float& y use dicha refer<strong>en</strong>cia para asegurar que el<br />
argum<strong>en</strong>to no sea modificado<br />
15. Modifique ConstReturnValues.cpp eliminando los com<strong>en</strong>tarios <strong>en</strong> las líneas<br />
erróneas una cada vez para ver qué m<strong>en</strong>sajes de error muestra el compilador.<br />
16. Modifique ConsPointer.cpp eliminando los com<strong>en</strong>tarios <strong>en</strong> las líneas erróneas<br />
para ver qué m<strong>en</strong>sajes de error muestra el compilador.<br />
17. Haga una nueva versión de ConstPointer.cpp llamada ConstRefer<strong>en</strong>ce.<br />
cpp que demuestre el funcionami<strong>en</strong>to con refer<strong>en</strong>cias <strong>en</strong> lugar de con punteros.<br />
(quizá necesite consultar el [FIXME:capítulo 11]).<br />
18. Modifique ConstTemporary.cpp eliminando el com<strong>en</strong>tario <strong>en</strong> la línea errónea<br />
para ver el m<strong>en</strong>saje de error que muestra el compilador.<br />
19. Cree una clase que cont<strong>en</strong>ga un float constante y otro no constante. Inicialícelos<br />
usando la lista de inicialización del constructor.<br />
20. Cree una clase llamada MyString que cont<strong>en</strong>ga una cad<strong>en</strong>a y t<strong>en</strong>ga un constructor<br />
que inicialice la cad<strong>en</strong>a y un método print(). Modifique StringStack.<br />
cpp para que maneje objetos MyString y main() para que los imprima.<br />
21. Cree una clase que cont<strong>en</strong>ga un atributo constante que se inicialice <strong>en</strong> la lista<br />
de inicialización del constructor y una <strong>en</strong>umeración no etiquetada que se use<br />
para determinar el tamaño de un vector.<br />
248<br />
✐<br />
✐<br />
✐<br />
✐