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

✐<br />

8.7. Ejercicios<br />

22. Elimine el especificador const <strong>en</strong> la definición del método de ConstMember.<br />

cpp, pero deje el de la declaración para ver qué m<strong>en</strong>saje de error muestra el<br />

compilador.<br />

23. Cree una clase con un método constante y otro ordinario. Cree un objeto constante<br />

y otro no constante de esa clase e int<strong>en</strong>te invocar ambos métodos desde<br />

ambos objetos.<br />

24. Cree una clase con un método constante y otro ordinario. Int<strong>en</strong>te llamar al<br />

método ordinario desde el método constante para ver qué m<strong>en</strong>saje de error<br />

muestra el compilador.<br />

25. Elimine el com<strong>en</strong>tario de la línea errónea <strong>en</strong> mutable.cpp para ver el m<strong>en</strong>saje<br />

de error que muestra el compilador.<br />

26. Modifique Quoter.cpp haci<strong>en</strong>do que quote() sea un método constante y<br />

lastquote sea mutable.<br />

27. Cree una clase con un atributo volatile. Cree métodos volatile y no volatile<br />

que modifiqu<strong>en</strong> el atributo volatile y vea qué dice el compilador.<br />

Cree objetos volatile y no volatile de esa clase e int<strong>en</strong>te llamar a ambos<br />

métodos para comprobar si funciona correctam<strong>en</strong>te y ver qué m<strong>en</strong>sajes de<br />

error muestra el compilador <strong>en</strong> caso contrario.<br />

28. Cree una clase llamada bird que pueda ejecutar fly() y una clase rock que<br />

no pueda. Crear un objeto rock, tome su dirección y asigne a un void*. Ahora<br />

tome el void*, asígnelo a un bird* (debe usar un molde) y llame a fly()<br />

a través de dicho puntero. ¿Esto es posible porque la característica de C que<br />

permite asignar a un void* (sin un molde) es un agujero del l<strong>en</strong>guaje, que no<br />

debería propagarse a <strong>C++</strong><br />

249<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!