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

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

Saved successfully!

Ooh no, something went wrong!