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 326 — #364<br />
✐<br />
Capítulo 11. Las refer<strong>en</strong>cias y el constructor de copia<br />
En la definición de fp2 puede verse que el puntero a un método puede inicializarse<br />
cuando se crea, o <strong>en</strong> cualquier otro mom<strong>en</strong>to. A difer<strong>en</strong>cia de las funciones no<br />
son miembros, el & no es opcional para obt<strong>en</strong>er la dirección de un método. Sin embargo,<br />
se puede dar el id<strong>en</strong>tificador de la función sin la lista de argum<strong>en</strong>tos, porque<br />
la sobrecarga se resuelve por el tipo de puntero a miembro.<br />
Un ejemplo<br />
Lo interesante de un puntero es que se puede cambiar el valor del mismo para<br />
apuntar a otro lugar <strong>en</strong> tiempo de ejecución, lo cual proporciona mucha flexibilidad<br />
<strong>en</strong> la programación porque a través de un puntero se puede cambiar el comportami<strong>en</strong>to<br />
del programa <strong>en</strong> tiempo de ejecución. Un puntero a miembro no es distinto;<br />
le permite elegir un miembro <strong>en</strong> tiempo de ejecución. Típicam<strong>en</strong>te, sus clases sólo<br />
t<strong>en</strong>drán métodos visibles públicam<strong>en</strong>te (los atributos normalm<strong>en</strong>te se consideran<br />
parte de la implem<strong>en</strong>tación que va oculta), de modo que el sigui<strong>en</strong>te ejemplo elige<br />
métodos <strong>en</strong> tiempo de ejecución.<br />
//: C11:PointerToMemberFunction.cpp<br />
#include <br />
using namespace std;<br />
class Widget {<br />
public:<br />
void f(int) const { cout