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

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 />

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

Saved successfully!

Ooh no, something went wrong!